71486 ll 02166
MARCH 1987 VOL. 5 NO. 3 *3.93
FOR THE IBM SYS T E M S PROFESSIONAL
DESKPRO 386
Compaq’s Powerful Puny in the 80386 Sweepstakes
COMPATIBILITY/PERFORMANCE UPDATE
MODULA-2 ROUNDUP
OURNAL
_\
Eureka:
The Solver'
Mnyone and
am everyone who
routinely works with
equations needs
Eureka: The Solver
It solves the most com¬
plex equations in seconds.
Whether you're a scientist,
engineer, financial analyst,
student, teacher, or some
other professional, you
need Eureka: The Solver!
Any problem that can be
expressed as a linear or non-linear
equation can be solved with Eureka.
Algebra, Trigonometry and Calculus
problems are a snap.
Eureka: The Solver also handles
maximization and minimization
problems, does plot functions,
generates reports, and saves you
an incredible amount of time.
X+exp(X) = 10
solved instantly instead
of eventually!
Imagine you have to "solve
for X," where X + exp(X) — 10, and
you don't have Eureka: The Solver.
What you do have is a problem,
because it's going to take a lot of
time guessing at "X." Maybe your
guesses get closer and closer to the
right answer, but it's also getting
closer and closer to midnight and
you're doing it the hard way.
With Eureka: The Solver, there's
no guessing, no dancing in the dark—
you get the right answer, right
now. (PS: X = 2.0705799, and
Eureka solved that one in .4
of a second!)
How to use Eureka:
The Solver
It's easy.
1. Enter your equation into
the full-screen editor
2. Select the "Solve" command
3. Look at the answer
4. You're done
You can then tell Eureka to
■ Evaluate your solution
■ Plot a graph
■ Generate a report, then send the
output to your printer, disk file
or screen
■ Or all of the above
Eureka: The Solver includes
S A full-screen editor
S Pull-down menus
S' Context-sensitive Help
Ef On-screen calculator
S Automatic 8087 math
co-processor chip support
S Powerful financial functions
S Built-in and user-defined
math and financial functions
S Ability to generate reports
complete with plots and lists
S Polynomial finder
S Inequality solutions
Some of Eureka’s
key features
You can key in:
S A formula or formulas
S A series of equations—and
solve for all variables
S Constraints Ilike X has to be
< or — 2)
S A function to plot
S Unit conversions
S Maximization and minimization
problems
S Interest Rate/Present Value
calculations
S Variables we call “What hap¬
pens?," like "What happens if I
change this variable to 21 and
that variable to 27?"
All this power for only
$99.95!
Equation-solving used to be a
mainframe problem, but we've
solved that problem.
Eureka: The Solver is all you
need—and it's yours for only
$99.95!
That kind of savings you can
calculate with your fingers!
System requirements
IBM PC, AT, XT, Portable, 3270 or true compatibles.
PC-DOS (MS-DOS) 2.0 and later. 384K.
Introductory price—good through July 1, 1987
__ oCl*
4585 SCOUS VALLEY DRIVE
SCOTTS VALLEY, CA 95066
(408) 438-8400 TELEX: 172373
GF6
BORLA
INTER N'-ATIONAL
For the dealer nearest you or to order by phone call
(800)255-8008
Sl ., m in CA 1800) 742-1133 in Canada (800) 237-1136
Turbo Prolog
C d If you're at all interested in
artificial intelligence, databases, expert
systems, or new ways of thinking about
programming, by all means plunk down
your $ 100 and buy a copy of Turbo
Prolog. Bnjce Webster B yte 9 9
Only
$99.95!
Turbo Prolog, the natural language
of Artificial Intelligence, is the most
popular Al package in the world with more
than 100,000 users. It's the 5th-generation
computer programming language that
brings supercomputer power to your IBM
PC and compatibles. You can join the Al
revolution with Turbo Prolog for only
$99.95. Step-by-step tutorials, demo
programs and source code included.
Vew/ Turbo Prolog
If Toolbox
Our new Turbo Prolog Toolbox "
enhances Turbo Prolog—with more
than 80 tools and over 8,000 lines of
source code that can easily be
incorporated into your programs. It
includes about 40 example programs
that show you how to
use and incorporate your
new tools.
New Turbo Prolog
Toolbox features include:
Business graphic generation
Complete communications package
File transfers from Reflex, dBASE III,
1-2-3, Symphony
A unique parser generator
Sophisticated user-interface design
tools
It's the complete developer's
toolbox and a major addition to
Turbo Prolog. You get a wide variety
of menus—pull-down, pop-up, line,
tree and box—so you can choose the
one that suits your application best.
You'll quickly and easily learn how to
produce graphics; set up communica¬
tions with remote devices; read
information from Reflex? dBASE III?
Lotus 1-2-3 • and Symphony • files;
generate parsers and design user
interfaces. All of this for only $99.95.
Only
$99.95!
System requirements
Turbo Prolog: IBM PC, XT, AT or true compatibles. PC-DOS (MS-
DOS) 2.0 or later. 384K. Turbo Prolog Toolbox requires Turbo
Prolog 1.10 or higher. Dual-floppy disk drive or hard disk. 512K.
Turbo Pascal
The power and high performance of
Turbo Pascal is already in the hands of
more than half-a-million people. The tech¬
nically superior Turbo Pascal is the de facto
worldwide standard and the clear leader.
The Turbo Pascal family includes:
■ Turbo Pascal • 3.0
■ Turbo Tutor ® 2.0
■ Turbo Database Toolbox *
■ Turbo Editor Toolbox •
■ Turbo Graphix Toolbox 9
■ Turbo GameWorks ®
■ Turbo Pascal Numerical Methods
Toolbox "
Nt
ew! Turbo Pascal
Numerical Methods
Toolbox
Turbo Pascal, the worldwide standard in
high-speed compilers, and family.
i 6 The language deal of the century.
Jeff Duntemann, PC Magazine 3 3
What our new Numerical Methods
Toolbox will do for you now:
g) Find solutions
to equations
gj Interpolations
gj Calculus: numerical derivatives
and integrals
gj Differential equations
gj Matrix operations: inversions,
determinants and eigenvalues
gj Least squares approximations
gj Fourier transforms
As well as a free demo FFT pro¬
gram, you also get Least Squares
Fit in 5 different forms:
1. Power
2. Exponential
3. Logarithm
4. 5-term Fourier
5. 5-term Polynomial
They're all ready to compile
and run.
All this for only $99.95!
System requirements
IBM PC, XT, AT or true compatibles. PC-
DOS (MS-DOS) 2.0 or later. Turbo Pascal
2.0 or later. Graphics module requires
graphics monitor with IBM CGA, IBM
EGA, or Hercules compatible adapter
card, and requires Turbo Graphix
Toolbox. 8087 or 80287 numeric co¬
processor not required, but recom¬
mended for optimal performance. 256K.
Turbo Pascal 3.0
Includes 8087 & BCD features for 16-bit
MS-DOS and CP/M-86 systems. CP/M-80
version minimum memory: 48K; 8087
and BCD features not available. 128K.
BI-1103
Turbo Basic
V introducing Turbo
1 Basic, the high¬
speed BASIC you'd
expect from
Borland!
It's the BASIC compiler you've
been waiting for. And it's so fast
that you'll never have to wait
again.
Turbo Basic is a complete devel¬
opment environment; it includes a
lightning-fast compiler, an inter¬
active editor, and a trace debug¬
ging system.
Because Turbo Basic is compat¬
ible with BASICA, chances are that
you already know how to use
Turbo Basic.
With Turbo Basic your
only speed is "Full
Speed Ahead"!
You probably already know us
for both Turbo PascaT and Turbo
Prolog. 1 " Well, we've done it again!
We created Turbo Basic,
because BASIC doesn't have to be
slow.
In fact, building fast compilers is
a Borland specialty; both our Turbo
Pascal and our Turbo Prolog out¬
perform all their rivals by factors,
and with Turbo Basic, we're proud
to introduce the first high-speed
BASIC compiler for the IBM 9 PC. If
BASIC taught you howto walk,
Turbo Basic will teach you how
to run!
The Critics' Choice
11 Borland has succeeded in
stretching the language without
weighing us down with unneces¬
sary details ... Turbo Basic is the
answer to my wish for a simple yet
blindingly fast recreational utility
language . .. The one language
you can't forget how to use, Turbo
Basic is a computer language for
the missus, the masters, the
masses, and me.
Steve Gibson, InfoWorld
Borland's Turbo Basic has advan¬
tages over the Microsoft product,
including support of the high¬
speed 8087 math chip.
John C. Dvorak 5 5
Turbo Basic ends the
basic confusion
There’s now one standard:
Turbo Basic.
It's fast, BASICA-compatible, and
because Turbo Basic is a Borland
product, the price is right, the
quality is there, and the power is
at your fingertips. You see, Turbo
Basic's part of the fast-growing
Borland family of programming
languages—we call it the "Turbo
Family." Hundreds of thousands of
users are already using Borland's
languages, so you can't go wrong.
So join a whole new generation of
smart IBM PC users—get your
copy of Turbo Basic today. You get
an easy-to-read 300+ page
manual, two disks, and a free
MicroCalc spreadsheet—and an
instant start in the fast new world
of Turbo Basic. All of this for only
$99.95—Order your copy of Turbo
Basic today!
Free spreadsheet included,
complete with source code!
Yes, we've included MicroCalc, our sample
spreadsheet, complete with source code,
so that you can get started right away with
a "realprogram." You can compile and run
it "as is," or modify it.
A technical look at
Turbo Basic
gf Full recursion supported
gf Standard IEEE floating-point
format
g( Floating-point support, with full
8087 (math co-processor)
integration. Software emulation if
no 8087 present
gf Program size limited only by
available memory (no 64K
limitation)
g| EGA and CGA support
g| /Access to local, static, and global
variables
gf Full integration of the compiler,
editor, and executable program,
with separate windows for
editing, messages, tracing, and
execution
gf Compile, run-time, and I/O errors
place you in the source code
where error occurred
gf New long integer (32-bit) data
type
gf Full 80-bit precision
gf Pull-down menus
gf Full window management
System requirements
IBM PC, XT, AT and true compatibles, PC-DOS (MS-
DOS) 2.0 or later. One floppy drive, 256K.
$99.9 5 *
only
BI-1103
C
T urbo C: The
fastest most
efficient and easy-
to-use C compiler at
any price
Compilation speed is more than
7000 lines a minute, which makes
anything less than Turbo C an
exercise in slow motion. Expect
what only Borland delivers: Quality,
Speed, Power and Price.
Turbo C: a complete
interactive development
environment
Like Turbo
Pascal and
Turbo Prolog,
Turbo C comes
with an interactive editor that will
show you syntax errors right in your
source code. Developing, debug¬
ging, and running a Turbo C
program is a snap.
Turbo C: The C compiler
for amateurs and
professionals
If you're just beginning and
you've "kinda wanted to learn C,"
now's your chance to do it the easy
way. Like Turbo Pascal, Turbo C's
got everything to get you going.
If you're already programming
in C, switching to Turbo C will
considerably increase your
productivity and help make your
programs both smaller and faster.
Actually, writing in Turbo C is a
highly productive and effective
method—and we speak from exper¬
ience. Eureka: The Solver and our
new generation of software have
been developed using Turbo C.
Turbo C: The C compiler
everybody's been
waiting for. Everybody
but the competition
Borland's "Quality, Speed, Power
and Price" commitment isn't idle
corporate chatter. The $99.95 price
tag on Turbo C isn’t a "typo," it's
real. So if you'd like to learn C in a
hurry, pick up the phone. If you're
already using C, switch to Turbo C
and see the difference for yourself.
System requirements
IBM PC, XT, AT and true compatibles. PC-DOS (MS-
DOS) 2.0 or later. One floppy drive. 320K.
Technical Specifications
Ef Compiler: One-pass compiler
generating linkable object modules
and inline assembler. Included is
Borland's high performance "Turbo
Linker" The object module is com¬
patible with the PC-DOS linker. Sup¬
ports tiny, small, compact, medium,
large, and huge memory model
libraries. Can mix models with near
and far pointers. Includes floating
point emulator Iutilizes 8087 V 80287
if installed).
Ef Interactive Editor: The system
includes a powerful, interactive full¬
screen text editor. If the compiler
detects an error, the editor auto¬
matically positions the cursor
appropriately in the source code.
gf Development Environment: A
powerful "Make" is included so
that managing Turbo C program
development is highly efficient.
Also includes pull-down menus
and windows.
S' Links with relocatable object
modules created using Borland's
Turbo Prolog into a single program.
S' ANSI C compatible.
Ef Start-up routine source code
included.
[vf Both command line and integrated
environment versions included.
‘Introductory price—good through July 1, 1987
Compile time
3.89
16.37
13.90
Compile and link time
9.94
29.06
27.79
Execution time
5.77
9.51
13.79
Object code size
274
Sieve benchmark (25 iterations)
Turbo C
Microsoft • C
Lattice C
Price
$99.95
$450.00
$500.00
Benchmark run on a 6 Mhz IBM AT using Turbo C version 1.0 and the Turbo
Linker version 1.0; Microsoft C versbn 4.0 and the MS overlay linker version
3.51; Lattice C version 3.1 and the MS object linker version 3.05.
All Borland products are trademarks or registered trademarks of Borland International, Inc. or
Borland I Analytica, Inc. Other brand and product names are trademarks or registered trademarks
of their respective holders. Copyright 1987 Borland International Bl-l 103
CIRCLE NO. 254 ON READER SERVICE CARD
Suggested retail prices: Btrieve, $245; multi-user Btrieve, $595; Xtrieve, $245; multi-user Xtrieve,
$595 (for report generation, add $145 for single-user and $345 for multi-user). Available from SoftCraft
and selected distributors. Requires PC-DOS or MS-DOS 2.X, 3.X, Xenix. Btrieve is a registered
trademark and Xtrieve is a trademark of SoftCraft Inc. x From Computer Language, November 1985.
CIRCLE NO. 201 ON READER SERVICE CARD
Btrieve:
The Programmer's Choice.
W hen you're serious about application
development, there's just one choice for file
management: Btrieve. With what Computer Language calls
"near mainframe functionality 1 ", Btrieve sets the file
management standard for PC applications. With Btrieve
loaded in your PC, your programs can use simple
subroutine calls to retrieve, store and update records.
B-tree
based for high
performance . Performance
is all-important, especially as
your database grows. That's
why Btrieve implements the
b-tree file structure—the
fastest, most efficient method
of accessing data.
Multi-user versions for
LANs and Xenix . When your
applications need to network, count on
Btrieve. A single version runs on all DOS 3
LANs, including IBM PC Network and Novell Advanced
Netware. Btrieve is also available for Xenix and
multitasking operating systems such as MultiLink
Advanced, Microsoft Windows and IBM Topview.
Interfaces to C, BASIC, Pascal ,
COBOL . Don't waste time
programming in awkward fourth generation
languages! With Btrieve, simply use the languages
you know best—and write applications the right
way. Over 15 language
interfaces available.
Built-in security
features. Lock up sensitive
data with Btrieve's password protection and
unique data encryption scheme—especially
useful in local area networks.
Help is
just a phone
call away.
Need technical
support? You've got it!
Btrieve users receive 30 days
of unlimited phone support at no charge. This
"Direct Connect" policy is renewable for a full
year at low cost. And try SoftCraft's free
bulletin board for technical tips, seven days a week.
Fault tolerant. Btrieve
insures against database dis¬
asters. Two levels of fault
tolerance guarantee data
integrity during accidents or
power failures—even if
lightning strikes. No extra
programming required.
SoftCraft
PO. Box 9802 #917 Austin, Texas 78766 (512) 346-8380 Telex 358 200
Thorough documentation, easy implementation. Getting
started with Btrieve is easy: the manual is packed with examples of
every Btrieve function in BASIC, Pascal, COBOL and C.
Database queries , report writing. Add Xtrieve ™ to your Btrieve
applications for a fully-relational DBMS. Xtrieve 's menu-driven
interface gives your users the on-line query capabilities they
need—without programming. Add
our report writer option to produce
custom reports and forms.
No royalties.
Need we say more?
MARCH 1987
gs
OURNALT
VOLUME 5, NUMBER 3
Modular Developments
Multilevel Debugger
Mapping PC Address Space
Compatibility and Performance: THE NEW STANDARD / STEVEN ARMBRUST and TED FORGERON
No longer content to wait for IBM, Compaq introduced the Deskpro 386, the first AT compatible to house the Intel 80386. Our .
tests show that this Compaq is the fastest on the market and holds great promise for the multitasking programs of the future. 48
Compatibility and Performance: UPDATING THE EVALUATION SUITE / TED FORGERON,
PAUL PIERCE and STEVEN ARMBRUST
To keep up with advancing technology, PC Tech Journal's compatibility and performance metrics have been revised so that
the)’ can identify the processor in the test machine—8086/88, 80286, or 80386—and evaluate performance accordingly. 70
MULTILEVEL DEBUGGER / MARK S. ACKERMAN
With CodeView, Microsoft has improved on its line-oriented debuggers, DEBUG and SYMDEB, by offering full debugging
capabilities at both the source code and assembly levels. CodeView is packaged with Microsoft’s C and FORTRAN compilers.
90
MAPPING PC ADDRESS SPACE / AUGIE HANSEN
Several maps of memory and I/O addresses serve as a guide to inner space for programmers and hardware designers who
need to know where the important hardware elements of the PC are located and where new ones can be safely placed.
102
MODULAR DEVELOPMENTS / JOHN T. COCKERHAM
Niklaus Wirth’s latest contribution to the field of computer languages boasts the strongest typing and structured syntax yet, ,
along with flexibility and low-level accessibility. Six Modula-2 compilers present a variety of choices for the systems developer. 114
BINARY TRANSFER / RONALD FLORENCE
The XMODEM protocol, considered the norm in PC-to-PC communications, can be adapted to transmit files between DOS
and UNIX systems. Code is presented for producing a stand-alone remote XMODEM program for UNIX systems.
144
9 DIRECTIONS
Performance Metrics
15 LETTERS
32 TECH RELEASES
47 TECH NOTEBOOK
XON/XOFF Printer
Driver
159 PROGRAMMING
PRACTICES
Procedural Algorithms
in Prolog
169 PRODUCT WATCH
REPERTOIRE
FILEMAX
Mace Utilities
BASTOC
111 EXPERT CONSULTANT:
APPLIED AI
What Computers
Cannot Do
185 BOOK REVIEWS
Approaching
Modula-2
188 TECH MART
196 TECH MARKETPLACE
208 CALENDAR
209 READER SERVICE CARD
Cover photograph • Marc David Cohen
' Software Tools ^
For Programmers & Non-Programmers
Get ‘State of the Art’ performance
and save valuable time with these
high quality utilities!
Opt-Tech Sort™
Opt-Tech Sort is a high performance Sort/Merge/Select
utility. It can read, sort and write a file faster than most
programs can even read the data. Example: 1,000
records of 80 bytes can be read, sorted and a new file
written in less than 10 seconds (IBM XT). Opt-Tech Sort
can be used as a stand-alone program or called as a
subroutine to over 25 different programming languages.
All the sorting, record selection and reformatting facilities
you need are included. A partial list of features includes:
The ability to process files of any size. Numerous
filetypes are supported including Sequential, Random,
Delimited, Btrieve, dBASE II & III and many others. Up
to 10 key fields can be specified (ascending or descend¬
ing order). Over 16 different types of data supported.
Powerful record selection capability allows you to specify
which records are to be included on your output. Record
reformatting allows you to change the structure of your
output record and to output special fields such as record
numbers for use as indexes.
MS-DOS $149. ★ NEW * Xenix $249.
VERSION On-Line Help™ USS*
On-Line Help allows you to easily add “Help Windows”
to all your programs. On-Line Help is actually two help
packages in one. You get BOTH Resident (pop-up) and
Callable Help Systems.
The resident version allows you to add help to any
system. Your Help System is activated when the “Hot
Keys” that you specify are pressed. You can then chain
between help windows in any manner you desire.
The callable version allows you to easily display help
windows from your programs. A simple call to the help
system makes the window appear. The original screen
is automatically restored when the help window is
cleared. On-Line Help is callable from over 20 different
languages.
You have full control over the help window content, size,
color and location.
MS-DOS $149. DemO $10. (apply toward purchase).
Scroll & Recall™
Scroll & Recall is a resident screen and keyboard
enhancement. It allows you to conveniently scroll back
through data that has gone off the top of your display
screen. Up to 27 screens of data can be recalled or writ¬
ten to a disk file (great for documenting systems opera¬
tions). Also allows you to easily recall and edit your
previously entered DOS commands without retyping.
Scroll & Recall is very easy to use. It’s a resident utility
that’s always there when you need it. MS-DOS $69.
Visa, M/C, AMEX, Check, Money Order, COD
or Purchase Orders accepted.
To order or to receive additional information just call
and receive immediate highly qualified attention!
Opt-Tech Data Processing
P.O. Box 678 — Zephyr Cove, NV 89448
^_ (702) 588-3737 _ y
OJRNAL
VOL. 5, NO. 3
PUBLISHER: Newton Barrett
EDITOR: Will Fastie
EDITORIAL
MANAGING EDITOR: Marjory Spraycar
EXECUTIVE EDITOR: Julie Anderson
SENIOR TECHNICAL EDITOR: Jim Shields
TECHNICAL EDITORS: Caroline Halliday, David Methvin
CHIEF COPY EDITOR: Susan Holly
SENIOR COPY EDITOR: Gail Shaffer
COPY EDITOR: Bruce Ansley
PROOFREADER: Elizabeth Wardlaw
NEW PRODUCTS EDITOR: Carole L. Eyring
OFFICE MANAGER: Trish Ledbetter
EDITORIAL SECRETARY: Valerie Rose
RECEPTIONIST: Cecilia R. Titus
CONTRIBUTING EDITORS: Steven Armbrust, Dave Browning, Michael
Covington, Richard M. Foard, Ted Forgeron, Augie Hansen, Thomas V.
Hoffmann, Henry F. Ledgard, Ted Mirecki, Max Stul Oppenheimer,
Richard Schwartz, Robert Shostak
ART & PRODUCTION
ART DIRECTOR: Paula Jaworski
ASSOCIATE ART DIRECTOR: Sharon Reuter
ART ASSISTANT: Maria Sese
PRODUCTION MANAGER: Alison Regan Mrohs
CONTRIBUTING ARTISTS: Maciek Albrecht, David Povilaitis
ADVERTISING SALES
NATIONAL SALES MANAGER: Rita Burke
ADVERTISING MANAGER/WEST COAST: Phyllis Egan
MARKETING DIRECTOR: Gayl Sorota
ASSISTANT TO THE PUBLISHER: Kathleen Abbott
ADVERTISING COORDINATOR: Mary Martin
MARKETING COORDINATOR: Kimberly Schroeder
SALES SECRETARY: JeanMarie Donlin
DISTRICT MANAGERS: Rosemarie Caruso—New England; Arlene
Braithwaite—Southeast; Pat Toohey—Mid-Atlantic; Bill Barney—Midwest;
Bill Bush, Deborah Gisonni, Nan Hanna—West Coast
ACCOUNT REPRESENTATIVES: Polly White—New England/Southeast;
Nanette Vilushis — Mid-Atlantic!Midwest; Carey Clarke, Steve
Moorman—West Coast; John Blake—National Accounts, Mail Order;
Classified advertising director—Kathryn Cumberlander
CIRCULATION
CIRCULATION MANAGER: Charles Mast
CIRCULATION SALES DEVELOPMENT: Daniel Rosensweig
MEDIA MANAGER: Melinda Kendall
RETAIL SALES MANAGER: Carol Benedetto _
ZIFF-DAVIS PUBLISHING COMPANY, a division of Ziff Communications Co.
PRESIDENT: Kenneth H. Koppel
SENIOR VICE PRESIDENT, Marketing: Paul Chook
VICE PRESIDENT, Operations: Baird Davis
VICE PRESIDENT, Controller: John Vlachos
VICE PRESIDENT, Creative Services: Herbert Stem
VICE PRESIDENT, Circulation: Alicia Marie Ivans
VICE PRESIDENT, Circulation Services: James Ramaley
VICE PRESIDENT, Marketing Services: Ann Poliak Adelman
VICE PRESIDENT, Development: Seth Alpert
VICE PRESIDENT: Hugh Tietjen
BUSINESS MANAGER: Gary A Gustafson
PRODUCTION DIRECTOR: Walter J. Terlecki
ZIFF COMMUNICATIONS COMPANY
CHAIRMAN: Philip B. Korsant; PRESIDENT: Kenneth H. Koppel; SENIOR VICE PRESIDENT:
Philip Sine; VICE PRESIDENTS: Laurence Usdin, William L. Phillips, J. Malcolm Morris,
Steven C. Feinman; TREASURER: Selwyn /. Taubman; SECRETARY: Bertram A Abrams
EDITORIAL OFFICE
ADVERTISING OFFICES
(East Coast/Midwest) Suite 800, 10480 Little Patuxent Parkway, Columbia, MD
21044. 301/740-8300. (New England) 90 Everett Street, Arlington, MA oil74.
617/868-4611. (West Coast) 34o0 Wilshire Blvd., Los Angeles, --
387-2100; 11 Davis Drive, Belmont, CA 94002. 415/598-2^90.
SUBSCRIPTION INQUIRIES
PC Ted) Journal, P.O. Box 2968, Boulder, CO 80321. Subscription service: 800/525-0643,
303/447-9330. Back issues: send $7/copy ($8 outside U.S.) to Ziff-Davis Publishing, One Park
Avenue, 4th floor, New York, NY 10016. _
PC Tech Journal (ISSN 0738-0194) is published bv Ziff-Davis Publishing Co., a division of
Ziff Communications Co., One Park Ave., New York, NY 10016. Published monthly except
semi-monthly in December. Subscription rate is $34.97 for one vear (13 issues). Additional
postage for Canada and Foreign is $8.00/year. Second-class postage paid at New York, NY,
and at additional mailing offices. POSTMASTER: Send address changes to PC Tech Journal
P.O. Box 2968, Boulder, CO 80321.
PC TECH JOURNAL is an independent journal, not affiliated in any way with International
Business Machines Corporation. IBM is a registered trademark of International Business
Machines Corp. Entire contents Copyright © 1987 Ziff-Davis Publishing Company, a division
of Ziff Communications Company. All rights reserved; reproduction in whole or in pan
without permission is prohibited. Direct written requests to Jean Lamensdorf, Licensing
Manager, Reprints/Rights & Permissions, One Park Avenue, New York, NY 10016.
Ai
Z-\>
1985 AWARD FOR
BEST COMPUTER MAGAZINE
Computer Press Association
4
CIRCLE NO. 222 ON READER SERVICE CARD
PC TECH JOURNAL
The Periscope" Difference
You’ll need it sooner or later
if you’re doing serious software development
W hen you’re writing large and/or complex pro¬
grams, it’s inevitable that you’ll have to deal
with some tough debugging problems. Your debugger
should help you find and solve those problems quick¬
ly. The more solid, dependable, and efficient your
debugger is, the better able it is to help you out in
those difficult situations. The big difference between
Periscope™ and other debuggers is this: Periscope
enables you to debug programs other debuggers can’t
handle AND to debug in situations in which other
debuggers won’t work!
“We have been buying Periscope for about two years now,
and have always been more than satisfied with the hard¬
ware, the software, and the responsiveness of the company.
We have used Periscope in a great many difficult situations,
where our only other alternative was a very expensive ICE
(in circuit emulator). Periscope has performed most
admirably\” writes Dr. William Ash, Technical Director,
FEL Computing.
P eriscope Quality.
The reason for
Product of the Month.
“Periscope was chosen as the January (1986) Product of
the Month because it represents what we felt was an ex¬
cellent balance between power and cost and it has an ex¬
traordinarily clean and innovative design... the overall
aura of quality was too strong to ignore,” writes Jeff
Duntemann, Technical Editor, PC Tech Journal, 7/86.
T
he Periscope Solution.
A full line of debugging
products that keep
getting better.
T he Periscope Promise.
Continued product
enhancement and user
support.
“I have used Periscope daily for the past few months for
testing and debugging my assembly code and I am still con¬
vinced this is the finest hardware or software debugger
available at any price,” writes long-time Periscope user
Wynn Bailey.
“Not only is your Periscope (Model I) software the greatest
thing since K &R, but your support has won over even the
heart of this hardened programmer,” writes Periscope user
Mark Kumler of US Maintenance. “I had decided long ago
that no one in the industry cared about their customers
after the check was cashed. You have definitely changed
my opinion on that subject!”
• User ideas are often implemented
• Your first software update is free; later up¬
dates are just $20
• You get free technical support and advice
• You can trade up for $10 plus the difference
in price
• You get a 30-Day, Money-Back Guarantee
To Order or Receive Free
Information, Call Toll-Free:
There’s a model of Periscope to meet your needs and
budget. The enhanced Version 3.0 gives you more
value than ever before! Call for details.
Periscope I has break-out switch & board
with 56K of protected RAM.$345.
Periscope II has break-out switch.$175.
Periscope II-X (software-only model).$145.
Periscope III has break-out switch & board
with hardware breakpoints, a real-time
trace buffer, and 64K of protected RAM .. .CALL.
The
PERIS*
Company, Inc.
<3||PE
14 Bonnie Lane, Atlanta, GA 30328
404-256-3860
800/722-7006 B
CIRCLE NO. 215 ON READER SERVICE CARD
ere’s an EGA card to get really
excited about.
Autoswitch. “The most versatile EGA
board on the market today” that “even the
klutziest novice should have up and running
in less than 10 minutes!’ (PC World 9/86)
That’s partly because it has “the best docu¬
mentation we’ve seen for such cards!’
(Infoworld 7/86)
But “what really sets Autoswitch apart
is its ability to auto¬
matically select
appropriate video
modes from its
extensive built-in
assortments!’ (PC
World 9/86)
In other words,
we’ve “consolidated
the best features of other EGA clones into
one board, and added an automatic (software)
switching feature” (Infoworld 7/86) that
“work(s) flawlessly.” (Byte 1/87)
“No board has been more successful
at improving IBM’s original idea” (PC World
9/86), and “none simplifies the mechanics
and widens the choices as much as Paradise’s*
Autoswitch EGA card!’ (Personal
Computing 9/86)
And that was before we introduced the
Autoswitch EGA 480 Card with 132 column
mode, 480 vertical line resolution, and
extended our already unbeatable range of
software applications support.
For the name of your local dealer, call
(415)871-4939.
I"PARADISE
CIRCLE NO. 230 ON READER SERVICE CARD
AutoSwitch is a trademark of Paradise Systems, Inc.
IBM is a registered trademark of International Business Machines Corporation.
^ynerKist ic
.Tandem
HTeledyrie
|ms Tikctrcn
Line Trans«;c
Items Tsend.
[land United
r Voice Prints
|tem Digital
nemt Techt
■ nst turner
■ll In to nil
I Triad I
U nidos y
l/'ictorTeJ
fc-oftw.in I
|i Ison Lai
I be Xyntj
Ttlerate Systems Telesis Televidel
Timeline Timeplex Technical Cj
Systems Transnet Telecommunicj
Laboratories Tymshare Ultra Sya
Airlines Vermont Micro Systems 1
Votan W. R. Grace Wang Labs Vj
Wrstinghonse Weyerhaeuser WH
XCOMP XEMAG XCEL ContrtJ
racket" Associates Thermo
fcaffic Control Technolc
Hriainglc Software
SaPA.II/fflB
IMBBk. Jjf&
WHAT'S THE SECRET DEBUGGING WEAPON
USED BY EVERYBODY FROM BORLAND TO ORACLE?
FREE 44-PAGE
“WE COULDN’T HAVE DONE IT WITHOUT
ATRON’S HARDWARE-ASSISTED
SOFTWARE BUGBUSTERS,
3 COM ADP AMP ARC/AMS AST
Research AT&T Accent Software Access
Technology Accuftber Accrues Active
V(«e Activision Actiix Advance Tech¬
nology Advance Tdecomputer Systents
Advanced Digital Aetna Akron Standard
Allen BcaJley Alloy Computer Products
ANSWER FROM ATRON.
Philippe Kahn
Borland Pres.
Larry Ellison
Oracle Pres.
PROBE displays the program execution in detail, including sym¬
bols and source code for C, Pascal, or assembly language pro¬
grams. Which shows how out-of-range pointers got that way.
The third plague, not enough room for the
debugging symbol table to be co-resident in
memory with a large program, was cured with
1-megabyte of on-board, hidden, write-pro-
„^ - ^ ,--- —tected memory. System memory was then free
IT n< M m for the program, keeping the symbol table and
CjhaCo»nt«§Cuu<Hl Cipher Lfcra GrtcaJjuin Citibank CmcorpCohetenrGolonran Gamrco Ccmjraq debugger Safe from deStfUCtion
When the job of bugbusting
was done, the wizards used
their PROBEs as performance
analyzers. So they could have
both reliability and perfor¬
mance. So they could send
only the best software into the
field.
Alphatype Alsys Alternative Technologies Amber Systems American
Airlines American Computer Products BoeiiJC Bimker Rsrcio Barn Cuori-
P*ny Bailesrech Boston Bankers Tms Banyan S»’5teii» Barber Coleman
Baron Beatrice U-S. Foods Beckman Insmiments BeJJ Cksnuiumcaupcis
Btn Northern Research Bendey Systems Berkeley Graphics Berman
Technologies Broom Bccory Blaise Computing Boeing Aer->.-f\ace
Boemg Computer Spurerm, Bodbnd lmem.it imJ Bolder SoJtviare Group
Bc^ Systems Bridee CtnmMankaskns Bnd»e Svsteim Bubble Soft Bunker Jiamn Caltna CDJ Cfntec
CfiriwrCNA Insurance CPT CRT Group CTm Cuh>c< >mp Cullinet S^ruaroCXICafeleshareCaihr.tk
RaihrayG_
Cfta Coming lintel Cipher i
CV '* •-
puta
Sy •
'yam C neept TednM^ti
co-'.ry Cornu ! |Vi cbm Con m Cr
Life Iivuvancr Cuhioitn|v GiUinet
Cancral ;w. Tran.n Dual#
Dkl/McOiM Hd DRS Dn
Resources DkraMrattt DsmumH I
D»
Di
Dt
Eli
Ex
§
Gi
M
M
In
ft
Jaj
La :
Lccu
M
(Current S_ .
ufe-i! iXrl.*
:v«t*« Guo,
M
Men'
M k r .
M. :
M ,
This is the city saved by the
Atron bugbusters. Your city.
Full of wizards, with hundreds
of millions of dollars invested
in wringing every ounce of
intelligence and performance
out of your PC. It used to be
plagued with the toughest
software bugs known to man¬
kind.
PLAGUES OF
BIBLICAL PROPORTIONS
The first and most difficult
plague was impossible to trap
with software debuggers.
These were carnivorous bugs
which randomly overwrote
programs, data, even the
debugger. Nastiest were the
ones that slipped in once every
few hours, or changed their
behavior after each new com¬
pile. Forty days and forty
nights of recompiling, trying
something else , caused many
a would-be resident of the city
to run screaming into the wil¬
derness, never to be heard
from again.
Second came the plague of
not knowing where the pro¬
gram was, or where it had
recently been. This com¬
pounded the first plague: How
could anyone know what
caused the random memory
overwrites? Add to this ran¬
dom interrupts and timing
dependencies, and you begin
to understand The Fear that
gripped the city.
Then came the last plague,
which brought the wizards to
their knees before they even
started debugging. Their tow¬
ering programs consumed so
much memory, there wasn’t enough room for their symbol table, let alone
debugging software. Even if they could get past the first two plagues, this
one killed their firstborn software.
ENTER THE HARDWARE-ASSISTED SOFTWARE BUGBUSTERS
The Atron solution came as a revelation: Monitor every memory
reference and every instruction executed, by adding a hardware board to
the AT or PC with an umbilical probe to the processor.
The result? Wham! The PC PROBE™ and the AT PROBE™ saved
civilization as we know it. The first plague was cured with PROBE’S
hardware-assisted breakpoint traps on reading, writing, executing, input¬
ting and outputting. These could be done on single or ranges of addresses,
and could include particular data values. All in real time. For a mere
software debugger to attempt this, a 1-minute program would take 5 hours
to execute.
Diagnostic Retrieval Dialogic Dicomed Dictaphone
■ 0>l ’ ay
. miinau Miles ! I • : it, ry Mm : i| •. Mim.j
lid Motorola Mouse Systi Muktcnra i : »lt|
National Information System* National Instruments National R,- <• m i, t oun<:il National Software Testing Labs National Syst
£VwAlt Development Center Nelson Analytical NertedSMtems-Nettai Systems Networt ( no 1 N . rm, iking
otstems New Rmuv lorft Times New Yorff University Nexuff Informal um id
N-m Iwcm Instrument System Northwestf-ra Mutual Lite Insurance Novell Nuveilu.- Numen,: • w
system L Vt.ivi-n.m-, W iter Center Qfficetech OugearCdmpam L>!. .
O.imicul (.)wiii||()n Lme Software Syttsmi Optia h t.)piis Systems iOracle Orchid Technology i\uns ('onung Fibre,:: ib
ra.itn : Bell IC Support 1\. .nl Polvtron Pr,»ce*s Systems Pacific Management I\in.sophic >v stems Passktv Pathway Design (Vat Marwick
& Mitchell Pegasus Software Penultimate Perkin Elmer Bitsoft frr*.nal Computer IVdijcrs Pfcnt Logic Systems Phamts PhiKrnix
got rware Associates Phone 1 Photon Phyaix International PiG-Solt Pick System Pirney Bowes Phambic Systems Polaroid Polygun
oalygon Ssiftware Buytcl Postech Priam priinavera Systems Prime Computer Pfiriceton Universiry Printer Systems Pro-Log Project
bottware Prolan Promis Information System Protocal Computer Puritan Benne_tt Quadram Qumtar Quotrun Systems RCA Reuters
Kacal Vadic Ramuda Inns Raytel Raytheon Company Reflectone Relational 1 ethnology Reliability Center Rcxhester Instrument
bystems Rockwell International Rohm & Hats Rolm RoseSofi SAS Institute Sensory Servio Logic N-Dex Labs Singer Keartott Smuth
Uta Prcxessing Softpro Space Labs Sperry Step Engineering Summa Four Sandra National Lib Santa Clara Systems Scanning
Management Schlajje Electronics Sentry Systems Shaffsta II Shell Development Shell Oil Siemens Sierra On-Line Simplex Time
Rtcorder Singular Solutions Small Computer Small Library Computing Softbridge Micro Systems Softcom Softlogic Solutions
boftpro Softrak Systems Software Arts Software Construction Software Decisions Software Group Software Publishing Software
Specialist Solution Technology Sony of America Sava Computing LTD Space Labs Sperry Spruce Technology Structure
bystems Studio Software Summa Four Summitt Software Technology Sun Micro Systems Symantec Synamitcal
Software Synex Sysgen Systems for Automatic Test Sytek Tandy TBL TCI Telesh TJ Controls Trane TRW Tandf
IF YOU AREN’T AN ATRON
CUSTOMER, ODDS ARE YOU
WON’T BE MAKING
THE TOP-TEN LIST.
On any given week, at least
nine of the top ten best-selling
software packages on the Soft-
Sel Hotlist come from Atron
customers.
Ever heard of Borland?
“Without Atron,” says its
president Philippe Kahn,
“there wouldn’t be a Side-
Kick™, Turbo Lightning™
would be light-years away, and
Turbo Prolog™ wouldn’t be
shipping today. ”
Ever use a spreadsheet?
From Enable™ to Paradox™,
their bugs were busted by
Atron products.
Into DBMSs? Everyone
from Ashton-Tate to Oracle
owns at least one Atron bug-
buster.
If you use a product from
one of the companies in The
City , you owe life as you know
it to Atron. Our guess is that
99% of all PCs, XTs and ATs
have at least one product
debugged with Atron bug¬
busters.
FREE 44-PAGE BUGBUSTING BIBLE COULD MAKE YOU
A PROPHET, AND YOUR COMPANY A PROFIT.
We’ve written a complete tutorial on state-of-the-art bugbusting.
And it’s yours, free for the asking. Full of examples and illustra¬
tions, it will show you how the wizards work their magic.
If you’re tired of suffering the wrath of program bugs, call Atron
today. You could be busting bugs, and sales records, tomorrow.
/^TuV K \
The second plague, not knowing from whence you came, was cured
with PROBE’S real-time trace memory. The history of program execution
is saved on-board, in real time. Once a hardware trap has occurred,
THE BUGBUSTERS
20665 Fourth Street • Saratoga, CA 95070 • 408/741-5900
Copyright © 1986 by Atron Corp. PC PROBE™ and AT PROBE™ Atron. The other fine companies mentioned throughout this advertisement own numerous trademarks.
Adv. by TRBA.
CIRCLE NO. 203 ON READER SERVICE CARD
DIRECTIONS
WILL FASTIE
Perfomiance Metrics
Measuring computer performance is a tricky business,
and benchmarks can be very misleading.
S ince the day that Peter Norton intro¬
duced his now-famous and ubiqui¬
tous system information utility, SI, we
have all been swept away by a passion
for quantifying the performance of the
computers on our desks. Our compul¬
sions may be well-founded. Justifying
the purchase of advancing technology,
is often difficult, especially in the face
of plummeting PC prices; the raw per¬
formance of the latest model can be a
significant selling point.
Norton’s SI was a good measure at
the time it was introduced, but the
hardware technology has moved well
beyond what SI is capable of measur¬
ing. In fact, it disturbs me that SI con¬
tinues to be so frequendy used, espe¬
cially by hardware vendors, because it
can actually be quite misleading. If the
problem were simply measuring 8088
processors that were getting faster and
faster, SI would serve perfecdy. The fact
of the matter is that today’s machines
might be equipped with any member of
Intel’s 86-family of processor, from 8088
to 80386; a numeric coprocessor; mem¬
ory capable of operating with zero wait
states, or just plain faster memory; dif¬
ferent (from the PC) memory organiza¬
tion; a cache memory system; a higher-
bandwidth disk-drive subsystem; a non-
AT bus; or an intelligent display adapt¬
er. The machine might even have an ac¬
celerator product with some combina¬
tion of the aforementioned features. All
these features affect performance in
ways that a simple program cannot
hope to measure reliably.
SI is not the only benchmark
whose contemporary validity I question.
Many benchmark programs attempt to
mimic the operation of particular types
of applications. For example, a bench¬
mark might attempt to measure com¬
pute-bound applications or disk-inten¬
sive applications or those with some
mix of the two. Actually, benchmarks
that measure processor- or disk-bound
performance are usually valid. The
problem is that most computer pro¬
grams have their own, unique finger¬
print where the use of system resources
is concerned. No “standard” benchmark
will ever properly illuminate the per¬
formance of unique programs.
To avoid this problem, another
type of benchmark measures the per¬
formance of a specific program so that
its operation may be compared on dif¬
ferent computers. The most common is
the “typical” Lotus 1-2-3 spreadsheet.
This might seem to be a reliable metric
because it does indicate how well the
machine will fare as a 1-2-3 engine; PC
Tech Journal uses metrics of this type
to measure language compiler perfor¬
mance. However, such tests shed little
or no light on the raw performance of
the underlying hardware—the very
thing we want to measure in our re¬
views of 80286 and 80386 machines. In
fact, this type of benchmark usually
masks the performance capabilities of
advanced hardware because most pro¬
grams such as 1-2-3 or compilers are
written for the lowest common denomi¬
nator—the 8088—and, therefore, they
may not show an 80386-based machine
in its best light even if the observed
performance is superior.
Worse, programs written for prior
architectures sometimes suffer on the
newer machines because they exploit
the dark recesses of the older ma¬
chine’s capability; on the newer archi¬
tecture, some of these “features” be¬
come suboptimal. Once again, typical
benchmarks usually fail to identify such
conditions and any performance degra¬
dation becomes invisible if the test
computer is faster in other ways.
NEW, IMPROVED!
PC Tech Journal has long recognized
this problem. That is why we have
taken a different approach in construct¬
ing the compatibility and performance
metrics that we update in this month’s
issue (“Updating the Evaluation Suite,”
Ted Forgeron, Paul Pierce, and Steven
Armbrust, p. 70). Our approach is diffi¬
cult to program, but easy to describe.
Rather than taking a single measure¬
ment, or reducing a set of observed
measurements to a single number,
Forgeron, Pierce, and Armbrust have
produced an Evaluation Suite that meas¬
ures the most important contributors to
performance and reports the results in¬
dividually. We thus leave the final con¬
clusions to you, because only you can
know the specific criteria that bear
upon your particular situation and
therefore understand which perfor¬
mance issues are germane.
We are going to stop referring to
the Evaluation Suite as a set of bench-
MARCH1987
9
ILLUSTRATION • MACIEK ALBRECHT
DIRECTIONS
marks. The term benchmark implies
that the answer is somehow absolute
and final. I prefer the term metric , be¬
cause we are providing a set of tools
that can be used for taking measure¬
ments. We consider those measure¬
ments excellent in each individual cate¬
gory, but we make no judgment about
the performance of the system as a
whole because, again, we cannot know
the fingerprint.
Our metrics are good, perhaps the
best currently available to measure AT-
compatible computers. The improve¬
ments embodied in the updated code
render the suite even more useful than
before, although some of the changes
are somewhat subtle.
The most significant change is to
ATPERF, which now identifies the pro¬
cessor (8088, 8086, 80188, 80186, 80286,
or 80386) and selects appropriate meas¬
urement techniques for each processor
type. This means that the suite can be
run on any PC and should deliver use¬
ful information. Alas, certain measure¬
ments cannot be taken on all processor
types; in those cases, ATPERF simply
does not report a result. One obvious
change to the program is the processor-
specific code; this was the only way to
make valid measurements because of
the architectural difference in the pro¬
cessors. ATPERF also has been extended
to handle zero-wait-state memory, a fea¬
ture that is becoming more and more
common as hardware vendors attempt
to make memory system performance
match the rising processor speeds and
as the price of faster DRAM chips drops.
READ THE LABEL!
Even though the PC Tech Journal com¬
patibility and performance tests do not
make judgments or report general in¬
dices of performance, each measure¬
ment must be understood. An anecdote
illustrates the point.
A number of firms use our Evalua¬
tion Suite to demonstrate their AT-com-
patible computers. One demonstrator at
Fall Comdex was showing the difference
in performance between his firm’s ma¬
chine and the standard AT. In almost
every category, his machine outper¬
formed the AT: However, ATPERF re¬
ported that his machine inserted more
wait states for graphics board memory
accesses than the AT, and he was apo¬
logizing to his audience for this, saying
that the development team was “look¬
ing into the problem.”
Of course, there was no problem
at all. In each machine the graphics
board was the same and it , not the pro¬
cessor, was constraining the operation.
The graphics board required a fixed
amount of realtime to perform its task;
in the demonstrator’s faster machine,
this translated into more wait states.
Had the demonstrator fully understood
the meaning of the metric, he could
have avoided the apologies and pointed
to yet another indicator of higher per¬
formance. Indeed, I explained the
meaning, and he changed his pitch.
Understanding each measurement
is what allowed us to discover an anom¬
aly in the measurements of the Compaq
Deskpro 386. When we ran the pro¬
gram, the times for ROM reads seemed
far too high. On closer inspection, it
was discovered that the technique used
to determine ROM timings (more fully
described in the Deskpro 386 review
on page 48) were fooled by Compaq’s
memory organization and the fact that
the BIOS is not actually in ROM at the
time the measurement is taken. We dis¬
covered this problem late in the publi¬
cation cycle; the article and tables are
updated to reflect proper timings, but
our published code for ATPERF does
not reflect a method for overcoming
this particular problem.
This is not an 80386-specific prob¬
lem. The metric is accurate for every
machine we have tested except for the
Deskpro 386. ATPERF provides accurate
measurements on ALR’s Access 386 ma¬
chine, for example. The Compaq expe¬
rience points out that even our metrics,
good as they are, can be fooled by the
implementation of techniques designed
to improve memory performance.
ATPERF’s first black eye was the zero-
wait-state memory of IBM’s XT-286; the
Deskpro 386’s static column RAM is the
second. In the future, cache systems
and interleaving will undoubtedly cause
similar difficulties. We also are con¬
cerned about the hybrid nature of sys¬
tems with accelerator products; will our
tests be valid for an AT with Intel’s In-
Board 386/AT installed?
The complexity of design and the
variety of systems may prevent a gen¬
eral-purpose utility from being written.
We hope this is not the case and are
working to give ATPERF the ability to
handle these new situations. However,
special metrics may be needed for spe¬
cial cases, such as the Deskpro 386 and
InBoard 386. If so, we will try to pro¬
vide them. I "imnim tSI
CALL FOR AUTHORS
As always, we know that among our
body of readers are many potential
authors for PC Tech Journal. I would
like to encourage you to get in touch
with us if you are interested in writing*
for our magazine.
Looking forward in time, we need
additional authors who can write on
the following topics:
• Artificial intelligence techniques
• Expert systems development
• Data management
• Local area networks
• PC-to-mainframe connections
• PC-to-minicomputer connections
• Programming techniques
• Operating systems
If you would like to be considered for
a writing assignment for PC Tech Jour¬
nal , please send a brief resume out¬
lining your education, experience, and
areas of knowledge to:
Marjory Spraycar, Managing Editor
PC Tech Journal, Suite 800
10480 Little Patuxent Parkway
Columbia, MD 21044
We will send you our authors’ guide
in return. A technical editor will con¬
tact you when we need articles related
to your areas of expertise.
Your suggestions for articles are
also welcome. Our normal process for
the development of feature articles in¬
volves two stages. We first review a
proposal, consisting of an abstract and
outline, and then request a first draft.
Other material, such as Tech Note¬
books and Programming Practices, can
be submitted in completed form.
We are looking forward to work¬
ing with you.
—WF
10
PC TECH JOURNAL
C Programmers!
dbj/lSTA": high-speed Database
written exclusively for C
NOW offers SQL-based Query
>_VISTA™has proved to be an all-round high performer in terms of fast execution..
John Adelus, Hewlett-Packard LtdJOJfice Productivity Division
I I igh-speed data retrieval and access...
just two benefits of using RAIMA’S network
model DBMS, db_VISTA. Combine these
benefits with those of C—speed,
portability, efficiency, and you begin to
understand db_VISTA’s real measure...
performance.
db_QUERY“: new simplicity
retains performance!
db_QUERY, our new C-linkable, SQL-
based, ad-hoc query and report writing
facility.. .provides a simple, relational view
of db_ VISTA’s complex network database.
No longer will you give up performance for
simplicity ... combine db_QUERY with
db_VISTA ... you have both!
Independent Benchmark proves
High-Speed model 2.76 times faster
An independent developer bench-
marked db_VISTA against a leading
competitor. Eleven key retrieval tests were
executed with sequentially and randomly
created key files.
♦Result of 11 Key Retrieval Tfests
db_VISTA :671.24 seconds
Leading Competitor :1,856.43 seconds
db_VISTA’s high-speed network database
model lets you precisely define relation¬
ships to minimize redundant data. Only
those functions necessary for operation are
incorporated into the run-time program.
Application Portability
Complete Source Code
For maximum application portability,
every line of db_VISTA’s code is written in
C and complete source code is available.
db__VISTA operates on most popular
computers and operating systems. So
whether you write applications for micros,
minis, or mainframes.. .db_VISTA is for
you.
How db_VISTA works...
Design your database and compile your
schema file with the database definition
language processor. Develop application
programs, making calls to db_VISTA’s C
functions. Edit and review your database
using the Interactive Database Access
utility. Compile and link your C program
with the db_VISTA run-time library, and
your application is ready to run.
Multi-user and LAN capability
Information often needs to be shared.
db_VISTA has multi-user capability and
supports simultaneous users in either
multi-tasking or local area networking
environments, allowing the same C appli¬
cations to run under UNIX, MS-DOS, and
VAX VMS.
Royalty-Free Run-Time
Whether you’re developing applications
for a few customers, or for thousands, the
price of db_VISTA cr db_QUERY is the
same. If you are currently paying royalties
for a competitor’s database, consider
switching to db_VISTA and say goodbye to
royalties.
FREE Technical Support
For 60 days
Raima’s software includes free telephone
support and software updates for 60 days.
Technical support personnel are available
to answer questions about our software or
yours.
30-Day Money-Back Guarantee
Try db__VISTA for 30 days and if not fully
satisfied, return it for a full refund.
Price Schedule
db_VISTA db_QUERY
□ Single-user $ 195 $ 195
□ Single-user w/Source $ 495 $ 495
□ Multi-user $ 495 $ 495
□ Multi-user w/Source $ 990 $ 990
NEW:
□ VAX Multi-user $ 990 $ 990
□ VAX Multi-user w/Source $1980 $1980
Call Toll-Free Today!
1 (800) db-RAIMA
(that's 1-800-327-2462)
—OR Call 1-206-828-4636
Read what others say. >.
“If you are looking for a sophisticated C
programmer’s database, db_VISTA is it. It
lets you easily build complex databases
with many interconnected record types.
Raima’s customer support and documen¬
tation is excellent. Source code availability
and a royalty-free run-time is a big plus.’’
Dave Schmitt, President
Lattice, Inc .
“My team has developed a sophisticated
PC-based electronic mail application for
resale to HP customers. db_VISTA has
proved to be an all-round high performer
in terms of fast execution, flexibility and
portability, and has undoubtedly saved us
much time and development effort!’
John Adelus, Hewlett-Packard Ltd.
Office Productivity Division
“On the whole, I have found db__VISTA
easy to use, very fast with a key find, and
powerful enough for any DBMS use I can
imagine on a microcomputer!’
Michael Wilson, Computer Language
db_VISTA Version 2.2
Database Record and File Sizes
♦ Maximum record length limited only
by accessible RAM
♦ Maximum records per file is 16,777,215
♦ No limit on number of records or set
types
♦ Maximum file size limited only by
available disk storage
♦ Maximum of255 index and data files
Keys and Sets
♦ Key length maximum 246 bytes
♦ No limit on maximum number of key
fields per record—any or all fields
may be keys with the option of
making each key unique or duplicate
♦ No limit on maximum number of
fields per record, sets per database, or
sort fields per set
♦ No limit on maximum number of
member record types per set
Operating System
& Compiler Support
♦ Operating systems: MS-DOS, PC-
DOS, UNIX, XENIX, SCO XENIX,
UNOS, ULTRIX, VMS
♦ C compilers: Lattice, Microsoft, IBM,
DeSmet, Aztec, Computer Innova¬
tions, XENIX and UNIX
Features
♦ Multi-user support allows flexibility
to run on local area networks
♦ File structure is based on the B-tree
indexing method and the network
database model
♦ Run-time size, variable—will run in
as little as 64K, recommended RAM
size is 256K
♦ Transaction processing assures
multi-user database consistency
♦ File locking support provides read
and write locks on shared databases
♦ SQL-based db_QUERY is linkable
♦ File transfer utilities included for
ASCII, dBASE optional
♦ Royalty-free run-time distribution.
♦ Source code available.
Utilities
♦ Database definition language processor
♦ Interactive database access utility
♦ Database consistency check utility
♦ Database initialization utility
♦ Multi-user file locks clear utility
♦ Key file build utility
♦ Data field alignment check utility
♦ Database dictionary print utility
♦ Key file dump utility
♦ ASCII file import and export utility
•The benchmark procedure was adapted from
"Benchmarking Database Systems: A Systematic
Approach” by Bitton. DeWitt and Turbyfill,
December 1983.
CORPORATION
High-Speed Programming Tbols ,
Designed for Portability
Call Toll-Free Today!
1 (800) db-RAIMA
(that’s 1-800-327-2462)
3055-112th Avenue N.E. • Bellevue, WA 98004 USA • (206) 828-4636 Telex: 6503018237 MCI UW
CIRCLE NO. 166 ON READER SERVICE CARD
37PT
COMPATIBLE DESIGN.
INCOMPARABLE PERFORMANCE.
INCREDIBLE VALUES.
CHOOSC FROM THESE COMPLETE SYSTEMS.
PC’S LIMITED TURBO PC
TM
Monochrome Systems
• Intel 16-Bit 8088-2 System Unit running at 4.77 MHz and 8.0 MHz
• 640K on Motherboard
• AT™-Style Keyboard
• 130 Watt Power Supply
• Hercules Compatible Graphics Adapter with one Parallel Port
• PC’s Limited Mono-IIA Flat Screen Monochrome Monitor with Tilt and Swivel Base
with two 360K Floppy Disk Drives— S S 3 9
with one 360K Floppy Disk Drive and one 20 Meg, 65 MS Hard Disk Drive— $1199
EGAds! Color Systems
» Intel 16-Bit 8088-2 System Unit running at 4.77 MHz and 8.0 MHz
' 640K on Motherboard
' AT™-Style Keyboard
» 130 Watt Power Supply
' PC’s Limited EGAds! Card
1 PC’s Limited EGAds! Monitor
with two 360K Floppy Disk Drives— S 12 2 9
with one 360K Floppy Disk Drive and one 20 Meg, 65 MS Hard Disk Drive— S 1 3 89
PC’s Limited 286*
Monochrome Systems
• Intel 80286 running at 8 MHz
• 1024K on Motherboard
• 1.2 Meg Floppy Disk Drive
• Combined Floppy and Hard Disk Controller
• AT™-Style Keyboard
• 192 Watt Power Supply
• Clock/Calendar with Battery Backup
• Hercules Compatible Monochrome Graphics Card
• 2 Serials and 2 Parallel Ports
• PC’s Limited Mono-IIA Flat Screen Monochrome Monitor with Tilt and Swivel Base
with 20 Meg, 65 MS Hard Disk Drive, Space Saving Chassis— S 1 T9 3
with 30 Meg, 40 MS Hard Disk Drive, AT™ Standard Chassis- $ 2 19 5
EGAds! Color Systems
• Intel 80286 running at 8 MHz
• 1024K on Motherboard
• 1.2 Meg Floppy Disk Drive
• Combined Floppy and Hard Disk Controller
• AT™-Style Keyboard
• 192 Watt Power Supply
• Clock/Calendar with Battery Backup
• PC’s Limited EGAds! Card
• 2 Serials and 1 Parallel Ports
• PC’s Limited EGAds! Monitor
with 20 Meg, 65 MS Hard Disk Drive, Space Saving Chassis— $2193
with 30 Meg, 40 MS Hard Disk Drive, AT™ Standard Chassis— $2393
PC’s Limited 286 12
Monochrome Systems
EGAds! Color Systems
• Intel 80286 running at 12 MHz
• 1024K on Motherboard
• 1.2 Megabyte Floppy Disk Drive
• Combined Floppy and Hard Disk Controller
• AT™-Style Keyboard
• 192 Watt Power Supply
• Clock/Calendar with Battery Backup
• Hercules Compatible Monochrome Graphics Card
• 2 Serials and 2 Parallel Ports
• PC’s Limited Mono-IIA Flat Screen Monochrome Monitor with Tilt and Swivel Base
• AT™-Standard Chassis
• Intel 80286 running at 12 MHz
• 1024K on Motherboard
• 1.2 Megabyte Floppy Disk Drive
• Combined Floppy and Hard Disk Controller
• AT™-Style Keyboard
• 192 Watt Power Supply
• Clock/Calendar with Battery Backup
• PC’s Limited EGAds! Card
• 2 Serials and 1 Parallel Ports
• PC’s Limited EGAds! Monitor
• AT™-Standard Chassis
with 30 Meg, 28 MS Hard Disk Drive—
with 40 Meg, 28 MS Hard Disk Drive—
$3095
$3295
with 30 Meg, 28 MS
with 40 Meg, 28 MS
Hard Disk Drive-
Hard Disk Drive—
$3495
$3695
30 Day
Money Back
Guarantee
_
■ -.-.
.... ..
..
_
—
(Tape backup optional)
A GUARANTEE THAI STANDS UP.
PC’s Limited has established itself as the leader in PC technology. And the guarantee and warranty programs we offer put us ahead of the
pack, too. Here are our terms in plain English.
30-Day Total Satisfaction Guarantee—Any item bought from PC’s Limited may be returned within 30 days from the date it was shipped for a
full refund of your purchase price. Returned items must be as-new, not modified or damaged, with all warranty cards, manuals, and packaging
intact. Returned items must be shipped prepaid and insured, and must bear a PC’s Limited Credit Return Authorization (CRA) on the shipping
label.
One Year Limited Warranty—PC’s Limited warrants the products it manufactures to be free from defects in materials and workmanship for one
year following the date of shipment from PC’s Limited. During the one year warranty period, PC’s Limited will repair or replace, at its option,
any defective products or parts at no additional charge, provided that the product is returned, shipping prepaid, to PC’s Limited.
a PC'S LIMITED
To buy PC's Limited computers, call us directly at 1 -800-426-5150.
Calls inside Texas, 1 -800-252-8336.
1611 Headway Circle, Building 3, Austin, Texas 78754
Sales Calls from anywhere in the country, (512) 339-6962, Technical Support Calls, 1-800-624-9896 or PC’s Limited BBS (512) 339-4127
Customer Service Calls, 1-800-624-9897 or MCI MAIL: PC’s Limited, Telex No. 9103808386 PC LTD FAX (512) 339-6721
CIRCLE NO. 150 ON READER SERVICE CARD
"If you need a general-purpose PC programming editor, look no
further . Recommended . ” - jerry poumeiie, Byte, 12/86
WINDOWS
Brief does do windows, and it does them your way!
You can split the screen horizontally and vertically mul¬
tiple times, creating as many windows as will fit on the
screen. Each window can show any part of any file.
BRIEF’s flexible, easy to use windows make working
with several files a breeze,
“The main thing is that it [BRIEF] will do just about
anything you want it to. It has windows— boy, does it
ever have windows!...
For the last few months... I’ve got a raft of mail urging
me to try Brief. Now that Fve tried it I see why. ”
The Program
Editor with
the BEST
Features
Program Editing
YOUR Way
A typical program editor
requires you to adjust
your style of programming
to its particular require¬
ments - NOT SO WITH
BRIEF. You can easily
customize BRIEF to your
way of doing things,
making it a natural ex¬
tension of your mind.
For example, you can
create ANY command and
assign it to ANY key
even basic function keys
such as cursor-control
keys or the return key.
The Experts Agree
Reviewers at BYTE,
1NFOWORLD, DATA
BASED ADVISOR, and DR.
DOBB’S JOURNAL all came
to the same conclusion -
BRIEF IS BEST!
Further, of 20 top in¬
dustry experts who were
given BRIEF to test, 15
were so impressed they
scrapped their existing
editors!-- V-
Since its introduction,
BRIEF has been sweep¬
ing programmers off
their feet. Why?
Because BRIEF offers the
features MOST ASKED
FOR by professional
programmers. In fact,
BRIEF has just about
every feature you’ve
ever seen or imagined,
including the ability to
configure windows,
keyboard assignments,
and commands to
YOUR preference. One
reviewer (David Irwin,
DATA BASED ADVISOR)
put it most aptly,
“(BRIEF).. .is quite
simply the best code
editor I have seen.”
Jerry Poumeiie - Byte Magazine, Dec. 1986
Every Feature You Can Imagine
Compare these features • Unlimited File Size
with your editor (or any -(even 2 Meg!)
other for that matter). • Reconfigure Keyl
• • Context Sensitive I
• Full UNDO (N Times) „ c . . „ .
... . ' • Search for regula
• Edit Multiple Large Files expressions”
• Compiler-specific . Mnemonic K
support, like auto Assignments '
indent, syntax check, ®
compile within BRIEF, * Horizontal Scrolling
and template editing • Comprehensive Err
• Exit to DOS inside BRIEF Recovery
• Uses all Available Memory • A Complete Compii
• Tutorial Programmable and
• Repeat Keystroke Readable Macro Lanj
Sequences • EGA and Large Dis
• 15 Minute Learning Time Support
• Windows (Tiled and • Adjustable line lenj
Pop-up) up to 512
MONEY-BACK GUARANTEE
Try BRIEF (S195) for 30 days - If not satisfied get a full refund
TO ORDER CALL (800-821-2492)
-Solution
i) y stems T
SOLUTION SYSTEMS, 335-P WASHINGTON ST., NORWELL, MA 02061, 617-659-1571
BRIEF is a trademark of UnderWare
CIRCLE NO. 130 ON READER SERVICE CARD
LETTERS
A Virtual
Graphics Screen
MYSTERIOUS CHARACTERS
I have been using VSCREEN.PAS from
your September 1986 issue (“A Virtual
Graphics Screen," Richard Chandler and
Gary Faulkner, p. 134), partly to learn
something about Pascal.
I am ordering a back issue of the
November 1985 PC Tech Jownal for
SURFACE.PAS (“The Painter’s Algo¬
rithm," Richard Chandler and Gary
Faulkner, p. 181) to use with VSCREEN.
In the meantime, I have some questions
regarding this program. In the past,
when I have raised the point of possi¬
ble typographical errors in printed list¬
ings, I have been assured that the list¬
ings are printed from actual computer
print-outs of tested coding, and there¬
fore, are unlikely to contain typesetting
errors. However, my Pascal compiler,
Turbo 3.0, hangs up on a line on page
145 of the article:
for y : = to c do
It seems that a number is missing from
this line, and if I put one in, the com¬
piler proceeds, but I do not know what
number should be there.
Also, two end statements appear
without semicolons. This is something I
had not seen before; however, the com¬
piler complained when I added them,
so 1 kept them out.
I also was unfamiliar with your use
of the up arrow character O that ap¬
peared in several places. Does this have
a specific meaning in Pascal?
Finally, in two places (on pages
141 and 142), in a very similar context,
a character appears to be smudged in
my copy. This character appears after
the less-than symbol (<) in the line
gotoxy (14,18);
write (’< : Begins or Ends line’);
This is an unusually complex and valu¬
able program to be found in the public
domain, and it is greatly appreciated.
Samuel S. Starr
Rose Valley, PA
Thanks to Mr. Starr for pointing out
several problems with the program, list¬
ing for VSCREEN.PAS. I hacl not noticed
them before and one of them is crucial
to running the program. The line that
Mr. Stair mentions,
for y : = to c do
should instead read
for y : = 0 to c do
Turbo Pascal does not allow a semi¬
colon (;) to precede an else statement
in the if. .then.. .else clause. This is the
reason for the missing semicolon fol¬
lowing those end statements.
In Pascal, the A (up arrow) charac¬
ter indicates a pointer variable (see
chapter 15 in the Turbo Pascal man¬
ual). Because Turbo accommodates
only a 64KB data segment, the virtual
screen had to be stored in the heap, ne¬
cessitating the use of pointers.
The characters that were not clear
in the gotoxy (a,b) statemmts were
part of screen directions for these proce¬
dures. We were trying to produce some¬
thing that looked like the symbol on the
Enter key. We used the < (60), - (196),
and 2(217) symbols for this. PC Tech
Journal has changed the printer used for
producing program listings and the
software for font selection apparently
was not completely bug-free when this
listing was prmted, thus a strange char¬
acter (at) was introduced into the list¬
ing. An error similar to this one appears
072 page 142 in the listing for proce¬
dure Write_to_Screen. The remainder
of the line that begins
gotoxy (10,12);
should actually read as follows
write(’PgUp/PgDn Scrolls Up or Down
Screen’);
We used the (172) character iiistead
of writing one-fourth and wound up
with a tilde (~) in the prmted listing.
—Richard Chandler
DOS DISSENT
In his article “The Ascent of DOS”
(October 1986, p. 92), Ted Mirecki
misses the point about the problems
with PC-DOS 3.2, which is, in fact, a
radical departure from prior versions.
One of the reasons PC-DOS computers
are so popular is the ease of installation
of most PC-DOS software, which de¬
pends on knowledgeable programmers
controlling the environment in which
their programs run. In version 3.2, IBM/
Microsoft took some of that control (the
hardware stack size) away from the pro¬
grammer and gave it to the customer,
who ends up calling the programmer to
find out why he is getting stack over¬
flow errors, and invariably blames the
programmer for the problem. And yet,
for all this trouble, version 3.2 offers no
operational advantage over 31. Software
companies should be outraged at IBM
for causing such headaches, not to men¬
tion the telephone bills, and demand
that stack management be returned to
the control of the programmer.
James L. Larsen
Computer Consultants
Salt Lake City \ UT
As PC-DOS matures and becomes more
of a professional business-oriented oper-
atmg system, it is inevitable that some
measure of control is lost. Evei 2 in the
current state of DOS, with ever moi'e
complex interactions between resident
prograins and a network environment,
it is becoming less practical to leave vys-
tem stack management within applica¬
tion programs. Whe ?2 a program is writ¬
ten, it is impossible to foresee its stack
requirements under all of the possible
conditions it may encounter. When and
if an application fails, it is certainly
simpler to tell use?s to 7nodify> a
CONFIG.SYS file than to distribute re¬
compiled versions of a ?2 application.
It might be aigued that taking
stack management away from the pi~o-
grammer is not absolutely necessary / in
MARCH 1987
15
LETTERS
DOS 3 2, but we might as well get used
to proper programming practices as
soon as possible. The separation of
memory, especially stack space, for sys¬
tem and application uses is the defining
characteristic of protected-mode opera¬
tion. Developers of software for upcom¬
ing protected-mode multitasking operat¬
ing systems will have no choice but to
relinquish some of the control they> here¬
tofore exercised over memory manage¬
ment. Such is the price of progress, but
the payoff will be more powerful appli¬
cations, and even more popularity for
the next generation of DOS systems.
—Ted Mirecki
WELL-DIRECTED
After a brief inspection of the PC Tech
Journal Directory , which includes the
product guide, I can say that this issue
alone is worth the yearly subscription.
It is extremely valuable, well done, and
very thoughtfully organized.
Pavel Vladu
Jersey’ City, NJ
THE ATRON BUGBUSTERS
BRING HARDWARE BREAKPOINTS
TO MICROSOFT'S CODEVIEW
You already have Microsoft’s
CodeView™ And you’ve seen our
ads for the Atron hardware-assisted
software debuggers. Right? You
know, the Atron Bugbustersl We
make the debugging tools used by
9 of the top 10 software developers
in the PC market. Now, with our
new MiniProbe™ shortcard, you
can use your familiar watchpoints
and tracepoints in real time.
Without learning new debugging
technology.
device. This solves the most
common debugging problem: Out-
of-range pointers which overwrite
the program code or data. Often,
the overwrite is different after each
new compile of the program.
The MiniProbe can also set a
hardware breakpoint over a range
of memory locations, helping to
trap uninitialized pointers. And
MiniProbe has a crash-recovery
switch box, which lets you regain
control of a frozen system.
Only $395 puts
you into world-
class debugging.
With real-time watchpoints and
tracepoints, a one-minute program
will run in one minute. Not 50
hours (the difference between
software-only debuggers and
hardware-assisted debuggers is a
3000-to-1 increase in efficiency).
And if the program bug you’re
trying to find has anything to do
with interrupt activity, it might
never occur when you’re debugging
with CodeView alone.
But with the Atron MiniProbe,
you can trap events like reading
and writing to memory or an IO
So now that you don't
have to learn a new
debugger, the only thing
keeping you from
debugging like the pros is
$395. And our phone
number: 408/741-5900.
Call today. Bust bugs, and
records, tomorrow.
THE DEBUGGER COMRANY
20665 Fourth Street • Saratoga, CA 95070
TRBA
© 1986 by Atron. MiniProbe 1 " Atron. CodeView™ Microsoft. Atron is a division of Northwest Instruments.
CIRCLE NO. 249 ON READER SERVICE CARD
BACK TO SCROLLER
Strange things happen when I run
SCROLLER.COM on my PC/AT. (See
“Flicker-free Scrolling,” Tech Notebook
67, Michael Abrash, September 1986,
p. 43.) Basically, the machine hangs and
requires a cold boot. I spent a lot of
time entering the program and double¬
checking for my own typographical er¬
rors. I had zero errors and zero warn¬
ings with my IBM MASM 1.0. The linker
gave the message “No stack segment,” a
length of 00193H, a name CSEG, and a
program load at 0000:0100. EXE2BIN
gave no errors or messages. Could it be
a problem with a typo in the article list¬
ing, or a conflict with another resident
color routine I have, or perhaps it is
with the DDIR.COM program (from PC
Magazine) that I use? Is the program
load address correct?
I have an AT bumped to 8 MHz, a
Hercules color graphics adapter, and I
also load a Norton SA.COM color rou¬
tine in my AUTOEXEC.BAT hie with the
ANSI.SYS installed in CONFIG.SYS. The
machine boots just fine, the desired
colors appear from the SA routine, and
DDIR.COM works fine until I load
SCROLLER.COM. Then the machine just
hangs when I run DDIR.COM.
Flicker is one problem I really
have always wanted to resolve. It has al¬
ways seemed an annoying but simple
bug that IBM should have addressed
and solved before releasing the original
PC and the CGA. This is why I really ap¬
preciated your SCROLLER.ASM program
when it was published. Thank you for
any suggestions you can provide.
William M. Ewers, president
American Progressive Life Insurance
Nashville, 77V
Here is one reason (and perhaps a sec¬
ond) why’ SCROLLER does not work well
for Mr. Ewers. The reason his system
hangs is that SCROLLER must be con¬
verted to a .COMfile with the command
EXE2BIN SCROLLER.EXE SCROLLER.COM
then SCROLLER.EXE must be deleted be¬
fore SCROLLER can be run. Mr. Ewers
was running the .EXE file, which is par¬
tially overwritten by the next program
run (in this case, Mr. Ewers happened to
run DDIR next, but any program
would have had the same effect). I am
afraid that in the interests of saving
space I neglected to spell out the correct
use of EXE2BIN here.
A possible reason why his screen
still flickers after SCROLLER is loaded is
that SCROLLER does not eliminate flick¬
er for the CGA, but only for dual-ported
16
PC TECH JOURNAL
WINDOWS FOR DATA™
The first choice
of professional
C programmers
“Windows for Data is the best
programming tool Fve ever used.
It’s the most flexible Fve seen.
Whenever Fve wanted to do something,
Fve been able to find a way”
Steven Weiss,
Stratford Systems
Professionals choose our tools because
they are designed, crafted, and supported,
for professionals. Here at Vermont Creative
Software, we understand that performance
and pleasure in programming derive
from more than a long list of functions.
Windows for Data provides:
PROFESSIONAL FLEXIBILITY:
Our customers repeatedly tell us how
they’ve used WFD in ways we never imagin¬
ed - but which we anticipated by designing
WFD for unprecedented adaptability. Vir¬
tually every capability and feature can be
modified to meet special needs. You will be
amazed at what you can do with WFD.
PROFESSIONAL PERFORMANCE:
Screen output is crisp and fast. Windows,
menus, and data-entry forms snap up and
down from the screen. WFD is built upon
and includes Windows for C, the win¬
dowing system rated #1 in speed and
overall quality in PC Tech Journal (William
Hunt, July 1985).
PROFESSIONAL RELIABILITY:
An unreliable tool is worse than no tool at
all. VCS products are known in the industry
for their exceptional reliability. Ask anyone
who owns one.
PROFESSIONAL DOCUMENTA¬
TION: Over 600 pages of documentation
provide step-by-step explanations for each
major application, a reference page for each
function, listings of functions alphabetical¬
ly and by usage, and a fully cross-referenced
index. Extensive tutorials and demonstra¬
tion programs assist learning.
PROFESSIONAL TECHNICAL
SUPPORT: The same expert program¬
mers that develop our products provide
prompt, knowledgeable technical support.
PROFESSIONAL PORTABILITY:
High-performance versions of VCS
products are available for XENIX,
UNIX, and VMS, as well as DOS. No
royalties.
OUR CHALLENGE AND
GUARANTEE
If you have an application where no
other tool can do the job, try Windows
for Data. If it doesn’t help you solve
your problem, RETURN FOR A FULL
REFUND. YOU MUST BE SATISFIED.
Ask for FREE DEMO DISKETTE
Vermont 2iEimAve.
Creative Richford, vt 05476
Software 802-848-7738,
Telex: 510-601-4160 VCSOFT
Prices: PCDOS* $295; XENIX, VMS, UNIX Call.
No royalties. Shipping $3.50.
* PCDOS specify C compiler.
WINDOWS FOR D/UA
for DOS, UNIX, VMS...
The complete windowing data entry, menu,
and help system that does the hard job
others can’t — we guarantee it!
Pop-up data entry windows; field types for
all C data types, plus decimals, dates, and
times; auto conversion to and from strings
for all field types; system and user supplied
validation functions; range checking; re¬
quired, must-fill, and protected fields; free¬
form movement; multiple-choice field entry;
scrollable sub-forms. Branch and nest win¬
dows, forms, and menus.
Complete context-sentitive help system
with pop-up windows and scrollable text.
Pop-up, pull-down, scrollable, and Lotus-
style menus.
NEW FOR DEBUGGING: Exclusive
VCS Error Traceback System auto¬
matically identifies the location and
cause of program errors. Eliminates the
need to code error checks on all function
calls! VCS Memory Integrity Check¬
ing helps catch those hard-to-detect,
memory-corruption errors.
NEW FOR ERROR HANDLING: In¬
stall your own error handler to be called
whenever a function detects an error.
NEW FORM LAYOUT UTILITY sim¬
plifies form design.
CIRCLE NO. 115 ON READER SERVICE CARD
LETTERS
CGA clones. This means that SCROLLER
will not work if the Hercules card is not
dual-ported. Mr. Ewers may have been
misled by the title for this Tech Note¬
book , which originally was "Flicker-free
Scrolling for CGA Clones. ” In addition,
the introductory blurb should have
stated that SCROLLER worked only with
CGA clones. I apologize for any incon¬
venience this has caused.
—Michael Abrash
THE TERMINATOR
In the November 1986 issue of PC Tech
Journal , the article “Prolog Arrives”
(Michael Covington and Andre Vellino,
p. 52) gives the following predicate defi¬
nition that “counts the number of ele¬
ments in a list..
length([],0).
length([HIT],N)
length(T,M),
N is M + 1
and states that “if the terminating condi¬
tion were written after the recursive
part, the program would not terminate.”
This simply is not the case. This defini¬
tion can be found in Leon Sterling and
Ehud Shapiro’s book The Art of Prolog
(The MIT Press, 1986) on page 131. Ei¬
ther ordering of these rules will work
for counting numbers in a list. The ter¬
minating condition is a goal such as
length([],X)
Such a goal will not unify with the head
of the recursive rule, hence the recur¬
sive rule will not be used. The terminat¬
ing condition rule would then be tried
and the process would halt. In fact,
placing the recursive rule first is more
efficient. The reason is this: consider
taking the length of a list of size n. The
recursive rule is going to be used n
times, whereas the terminating rule is
only ever used once. Hence, it makes
more sense to put the recursive rule
first, saving the interpreter from trying
the terminating rule n times. Perhaps
the authors have in mind that if the re¬
cursive definition is placed first, then
the definition is not suitable for other
than the stated purpose—that is, count¬
ing the number of elements in a list, so
that, for example, a call such as
length(X,2)
in which length is asked to generate a
list of length 2, will indeed not termi¬
nate as desired.
Richard Denneys
Schlumberger Well Services
Austin, TX
Mr. Denney's remarks are correct. Pro¬
grammers should note, however, that
while it is true, in general, that the or¬
der of clauses in a Prolog predicate is
important, it does not matter in this
particular case. This is because when
the call to length([],M) attempts to
bind [J to [HIT], it will fail and try
another clause (the program thus will
not go into an infinite loop).
A better example to illustrate the
significance of ordering clauses is an
alternative definition of length in which
the terminating condition is slightly dif¬
ferent and where cut controls the flow
of execution. The program
length 1([X],1).
length 1([HIT],N)
length 1(T,M),
N is M -I- 1.
will terminate successfully; however, the
following program construction:
length2([HIT],N)
length2(T,M),
N is M + 1.
length2([X],l).
will fail to terminate.
—Andre Vellino
Nothing Should
Come Between
Mainframe Mag Tapes
and Your dBASE or Lotus
Except
Telebyte Tape Drives
TDX Mag 9-track 1/2" Tape Systems from
Telebyte provide faster, error-free download¬
ing of mainframe data into your PC. You con¬
trol the start-stop tape drive either from the
keyboard or with Telebyte’s exclusive Data-
verter software for faster file transfer — the
equivalent of a 720,000 bit/second datalink.
Telebyte TDX tape drives are available at
either 45 or 75 ips, feature dual density
(800/1600 bpi) storage and back up process¬
ed files at 2 MB/minute (up to 10 times faster
than other 9-track drive systems) as a bonus.
Enter data into dBASE® and Lotus® with no
user programming. You do it in two easy steps
because Telebyte’s exclusive Dataverter runs
under both DOS 2.0 and Xenix? Dataverter
will automatically convert packed, zoned and
unsigned decimal field files, as well as labeled
tapes, from EBCDIC to ASCII. The tape
system is also supported by software lan¬
guages in your PC, including C, BASIC,
Fortran, Cobol, etc.
Only Telebyte offers such mainframe stand¬
ards of reliability and IBM-compatible tape drive
quality for so little money.
TELi
TECHNOLOGY, INC .
Telebyte Technology, Inc. • 270 E. Pulaski Road • Greenlawn NY 11740
GSA Contract Number GS00K86AGS5301
1 - 800 - 835-3298
(516) 423-3232
dBASE 1 " is a registered trademark of Ashton-Tate, Inc.; Lotus' 1 " is a registered trademark of Lotus Development Corporation; IBM " 1 is a registered trademark of
International Business Machine Corporation; Xenix"* is a registered trademark of Microsoft.
CIRCLE NO. 155 ON READER SERVICE CARD
18
PC TECH JOURNAL
NEW! FROM
BLAISE
COMPUTING
C
Today’s programmers
need more than yes¬
terday’s tools. Re¬
quirements such as
removable windows
and “sidekickable”
pop-up utilities
are changing
the face of pro¬
gram design.
You need to fil¬
ter interrupts so
that other resi¬
dent programs
still work. You
need the ability to switch between
multiple display pages and monitors.
Today’s technical demands are almost
endless, but C TOOLS PLUS gives you
what you need.
SOLID LIBRARY SUPPORT
Blaise Computing offers you solid li¬
brary support that can meet all your
demands and more. C TOOLS PLUS
embodies the full spectrum of general-
purpose utility functions that are criti¬
cal to today’s applications.
Here's just pa rt of the PL US
in C TOOLS PLUS:
♦ C TOOLS and C TOOLS 2 compatibil¬
ity—two packages that receive rave
reviews for quality, organization, usa¬
bility and documentation.
♦ FULL SOURCE CODE
C Tools Plus
For The Programmer
Whose Alphabet
Begins & Ends
With “C
♦ WINDOWS that are stackable, re¬
movable, that support word wrap and
that can accept user input.
♦ INTERRUPT SERVICE ROUTINE
support for truly flexible, robust and
polite resident applications.
♦ MULTIPLE monitor and display
support, including EGA 43-line mode.
♦ FAST DIRECT VIDEO ACCESS for
efficiency that will not constrain good
program design.
♦ DOCUMENTATION, TECHNICAL
SUPPORT and attention _
to detail that have distin¬
guished Blaise Computing
products over the years.
C TOOLS PLUS supports
the Microsoft (and IBM)
3.00 and Lattice 3.00 C
compilers and is just
$175.00.
Also Available Are:
C VIEW MANAGER —
A kit for building data
entry screens and menus.
Begin by designing on¬
screen what the operator
will see; call upon our
library functions from
your program to display
the screens and retrieve
the data. Just $275, in¬
cluding all library
source code.
CASYNCH MAN¬
AGER — provides
the crucial core
of hardware in¬
terrupt support
needed to build
applications that
communicate. It
also includes the ‘ 'XMODEM” file-transfer
protocol and support for Hayes-compatible
modems. All source code is included for $175.
C TOOLS & C TOOLS 2 — an indispensable
combination still available at a low price of
$175, including all source code. See re¬
view in PC Tech Journal, 6/85.
BLAISE COMPUTING INC.
2560 Ninth Street. Suite 316 Berkeley. CA 94710 (415)540-5441
ORDER TOLL-FREE 800-227-8087!
CA residents call (415) 540-5441
-for
orders a<
Marne
, S hippingA ddreSS '-
'. Citr-
VIS A or
NIC#'-
CIRCLE NO. 104 ON READER SERVICE CARD
LETTERS
At last! - Fast , On-screen
FLOWCHARTS
Finally! An on-screen flowchart pro'c-
essor that knows about flowcharts - not
just another “screen draw” program that
makes you do most of the work.
Interactive EasyFlow is a powerful
full-screen graphics program dedicated
to flowcharts and organization charts.
With this program you can quickly com¬
pose charts on the screen. More im¬
portant, you can easily modify charts so
they are always up to date.
Features: • Text is automatically
centered, character by character, within
shapes as you type it • Text formatting
controls allow you to over-ride the auto¬
matic formating where desired • Lines
are created by specifying the starting
and ending points - the program auto¬
matically generates the route • Cut and
paste facility allows arbitrary chart
fragments to be moved, copied rotated,
reflected or sent to/from disk • Shape
insert-delete and row/column insert-
delete • Charts can be up to 417
characters wide by 225 lines high.
Charts too wide for the printer are auto¬
matically printed in strips. • Charts can
be larger than the screen - the window
into the chart scrolls both horizontally
and vertically as necessary • Works
with many popular matrix printers in¬
cluding Epson, IBM graphics printer and
compatibles. Full support for HP
LaserJet and LaserJet Plus. Works with
HavenTree Software Limited
P.O. Box 1093-N
Thousand Island Park, NY 13692
Information: (613)544-6035 ext 48
HP 7475A (& compatible) plotters. Can
be used with ANY printer when non¬
graphic (character) output is acceptable
• All standard flowcharting shapes in¬
cluded • Most shapes supplied in large,
medium and small sizes • Extensive
manual (100+ pages) includes many
examples • Context sensitive “help”
facility provides immediate assistance at
any time • Any number of titles can be
placed on a chart • Commentary text
blocks can be placed anywhere in the
chart • Fast: written in assembly lan¬
guage • Plus many more features than
we can mention here
Requires at least 320K memory, DOS-2
or higher and an IBM or Hercules com¬
patible graphics card. On EGA, full
640x350 resolution is used.
Order direct for only $149.95 + $2.00
S&H (USA/Canada), $10.00 (foreign).
Payment by MO, check, VISA,
MasterCard, COD or Company PO.
Rush orders accepted ($15.00 S&H;
USA/Canada only). Rush orders re¬
ceived by noon will be delivered the next
business day (to most locations).
Order Desk: 1 -800-267-0668
The sample screen display shown below is typical of
what you see while editing a chart. Other screen dis¬
plays are provided for entering titles, changing
options, getting “help” and so on.
SHAPE CURSOR shows where you are in
the chart. Cursor keys move it around; chart
window scrolls if you run off the edge of the
window.
THE ENGINE STALLED
I would like to apologize to those who
had the interest to call or write for a
software product I had developed, the
BASIC engine, which has been adver¬
tised in the Tech Book section of PC
Tech Journal for the last few issues. I
will not be able to direcdy market and
support this product from now on and I
will not be in a position to answer re¬
quests. I am sorry that I was unable to
cancel the scheduled advertising in tinje
to avert some calls.
I have version 2.0 of the BASIC
engine almost ready to ship, but will
place it on the market on a “shareware”
basis. Look for it on bulletin boards and
through public domain software mar¬
kets. Version 2.0 has a more enhanced
editor that will allow screening for data
types, case, and length, and allows for¬
matting data better; it has an index file
access method; and it has an excellent
user-definable report generator.
Thank you again for your interest.
David A Violette
Praxis Software Engineering
Green River ; WY
A SUCCESSFUL EXPERIMENT
Back in 1983, PC Tech Journal pub¬
lished an article by Richard M. Foard on
XB, Experimental BASIC (“The Anatomy
and Construction of XB,” July/August
1983, p. 61). That article was the most
valuable tool that my company and I
used for more than 18 months. I com¬
piled your XB precompiler back then
and made only minor alterations to in¬
crease its speed. It clocked in at about
266 lines per minute and we have used
it since that time to develop between 50
and 100 XB-compiled programs with
upwards of 2,000 lines each.
Now times have changed and most
of the new program development we
do is in the C language. However, we.
still have a lot of maintenance to do on
what we have developed over the years,
so we still use XB. Some people might
believe that the new Microsoft Quick¬
BASIC compiler has reduced the useful¬
ness of XB, but that is not the case. The
new compiler balloons the code so
much, that we are sticking to our origi¬
nal IBM BASIC compiler. But even at
266 lines per minute, when processing
a 2,000-plus line program, XB seems
slow. So I have recently rewritten XB in
the C language. Our new version of XB
clocks in at 666 lines per minute.
Again thank you for the fine cover¬
age of Experimental BASIC.
Douglas Hill
Glendale, MO
CIRCLE NO. 113 ON READER SERVICE CARD
STATUS BAR (not to be
confused with a wetJbar) tells
you what Interactive EasyFlow
is doing at all times.
TEXT/MESSAGE
WINDOW used to enter
user text and to display
messages from Interactive
EasyFlow.
CURRENT SHAPE
WINDOW-shows the
content of the current
flowchart shape (the one
under the SHAPE
CURSOR) in complete
detail.
CHART WINDOW gives an overview of your chart; this
example shows the “normal" view. “Close-up” view shows a
smaller part of the chart in more detail. “Wide-angle” view
shows a larger part of the chart at reduced size.
20
PC TECH JOURNAL
MICROSOFT LANGUAGES NEWSLETTER VOL. 2, NO. 3
News about the Microsoft Language Family
Tracing through User Libraries with Microsoft® QuickBASIC
Large programs are easier to maintain and debug if they are divided into smaller, more manageable parts. These
units are called modules and may contain up to 64K of subprograms. You may separately compile subprograms
with Microsoft QuickBASIC and build user libraries of these BASIC subprograms as well as assembly language
routines. These user library routines can be used over and over again and are linked into your BASIC programs
as needed.
Debugging these user libraries is made very simple with the built-in debugger in Microsoft QuickBASIC.
QuickBASICs built-in Debugging mode allows you to control the rate of program execution and the number
of source lines displayed during execution. The Debugging mode is activated when the TRON statement is
executed and is turned off with the TROFF statement. You can activate the Debugging mode for part or all of a
source file. The Debugging mode has three “submodes”: Step, Trace and Animate.
When you debug your BASIC programs that call subprograms contained in user libraries, Microsoft’s QuickBASIC
Debugging mode lets you trace through the user library routines when you activate the Trace mode. This mode
traces program execution one line at a time like the Step debugging mode but you may also trace program
execution through subprograms and user-defined functions. If you call any assembly language routines in your
main program, the Trace mode will not trace through each line of the assembly routine but will trace the entire
routine as a whole. Because the built-in debugger allows you to display both the source code and the output
screen, you may observe the program execute while seeing the output.
Support Available for Microsoft Language Products
Once you purchase your Microsoft language product, a number of support services are available to you. If you
have any problems with your product, you may call the Microsoft Product Support Hotline at (206) 882-8089 for
assistance. A Product Support Representative will try to help you find a solution. In addition, Microsoft provides
technical assistance on some electronic bulletin boards, such as CompuServe?
If you are a software developer who needs in-depth information, you may purchase Microsoft DIAL, an
integrated set of on-line services. You can gain access to information on the DIAL bulletin board (which lists
answers to frequently asked technical questions and provides information on new products, bug lists, seminars,
and many other topics), and if the answer you are looking for is not on the bulletin board, you can electronically
submit technical assistance requests (TARs) directly to Microsoft’s support organization. Contact Linda McCarty at
(206) 882-8080 for an application form and additional information on DIAL.
Filling out and sending in your product registration card is very important. It will allow you to receive notices
about new versions and enhancements to your Microsoft product. The update notices let you know about the
enhancements and instruct you on how you may receive the updated version. If you are in the market for a
language product, you may receive useful information from this newsletter; you may also purchase a subscription
to our Microsoft System Journal that contains technical articles on our languages and operating systems/environ¬
ments. Microsoft Consumer Response can help you by sending you data sheets and other information such as
the Language Support Directory (for available third-party libraries that support Microsoft languages).
For more information on the products and features
discussed in the Newsletter,
write to: Microsoft Languages Newsletter
16011NE 36th Way, Box 97017, Redmond, WA 98073-9717.
Or phone:
(800) 426-9400. In Washington State and Alaska,
call (206) 882-8088. In Canada, call (416) 673-7638.
Microsoft is a registered trademark of Microsoft Corporation. CompuServe is a registered trademark of CompuServe, Inc.
Latest DOS Versions:
Microsoft C Compiler
4.00
Microsoft COBOL
2.10
Microsoft FORTRAN
4.00
Microsoft Macro Assembler
4.00
Microsoft Pascal
3.32
Microsoft QuickBASIC
2.01
Look for the Microsoft Languages Newsletter every month in this publication.
MULTI
USER
BBS
Off-the-shelf and custom systems for:
★ Multi-User Teleconferencing
★ Multi-User Electronic Mail
★ Multi-User File Upload/Download
★ Multi-User Order Entry
★ Multi-User Games and Amusements
★ Multi-User Database Lookup
★ Multi-User Online Expert Systems
★ Multi-User Catalog Scanning
★ Multi-User Classified Advertising
★ Multi-User Educational Services
OWKO.IC
mm, $BB**T£* STATUS -l»
19:It IUI Vtt OWKL »
iMCMT. tnmm status -n
*9:1* Wl OMKD. It
mqkt, cosunt snraim - 1 *
89:1* OMKCLir
mm, 6D6ME5 STATUS -II
19:31 IMVSb mil CMCOLt
CSDtTD SaOs 18M (Fill)
89:22 nmm 11*18 CflCHi
CIOITD Urbkfe 3UN (Mil)
13:3$ ll/M/ff
feeWI: Mb
*»cc«u: 1151
271
What do you need for your Multi-User
Bulletin Board System?
Us
Them
16 modems on one card
YES
?
Up to 64-user capability
YES
?
Runs under MS-DOS V3.1
YES
7
C source code available
YES
?
Menu-oriented operation
YES
?
Accounting w/audit-trail
YES
7
Extensive SYSOP displays
YES
7
Powerfail-protected data
YES
7
"Midnite cleanup" option
YES
7
1-year hardware warranty
YES
7
We sell hardware and software for the
IBM PC family and compatibles. Our
product line is centered around the
GALACTICOMM BREAKTHROUGH, a
single-slot card with 16 independent
modems on it. You will simply have a cable
coming out the back of your machine,
going straight into the jacks in the wall
installed by the telephone company. No
external hardware needed.
Call our multi-user demo system with your
modem, at (305) 922-3901. Then call (305)
472-9560, voice, for more information.
Why not call right now?
(?) GALACTICOMM
GALACTICOMM, Inc.. 11360 Tara Drive, Plantation. FL 33325
CIRCLE NO. 199 ON READER SERVICE CARD
22
LETTERS
MERGING TRAFFIC
Peter G .Aitken’s interesting review of
hard-disk cards for the PC in your Janu¬
ary 1987 issue (“Mass-Storage Mergers,”
p. 76) contains an error in the two
BASIC programs listed for verification
of the ROM BIOS version. For the IBM
PC, the program reads
10 DEF SEG&HF000
20 FOR X&HFFF5 TO &HFFFC
30 PRINT CHRS(PEEK(X));
40 NEXT
and for the Compaq Portable, the article
lists the program as
10 DEF SEG&HF000
20 PRINT CHR$(PEEK( &HFFE6));
In both programs, line 10 should read
instead as the following:
10 DEF SEG = &HF000
Running either program as listed by Mr.
Aitken will result in a syntax error mes¬
sage in line 10.
Guillermo Hakim
New York, NY
Thank you for your corrections to the
BIOS check listing for the two machines.
Line 20 in the IBM PC check should be
changed as well, to read
20 FOR X = &HFFF5 TO &HFFFC
Please also note some other corrections
to this articles table of benchmark re¬
sults (table 3, located across pages 84
and 85). First, under Measured Data,
the overall average for the AUTOTEST
random 8-sector read (0.90 width) ac¬
tually should be 185.8
Under the next section, Percentage
of Average Performance, several clarifi¬
cations should be noted. First, the aver¬
age of random tasks for the Mountain
Computer card should say 83. Next, the
unit measure for the ATDISK effective
transfer rate should read milliseconds/
KB (ms/KB)—designed so that a smaller
number indicates a better' performance
(consistent with the remainder of the ta¬
ble). Also, to correct a computational
error, the actual results for this test can
be obtained by dividing the figures
printed by 1.09.
Finally, the averages at the bottom
of the table are computed as follows.
The average for random tasks is ob¬
tained as an average of two items: (1)
taking the average of random tasks in
ATDISK, that is, the average seek time
and the track-to-track seek time, and
(2) the average of all eight random
tests. The average of sequential tasks is
obtained as an average of two items:
(1) taking the average of sequential
tasks in ATDISK, that is DOS file I/O
and effective transfer rate, and (2) the
average of sequential tests. The overall
is an average of the average random
and the average sequential results. Al¬
though the differences in the ATDISK ef¬
fective transfer rate results (mentioned
above) affect the sequential tasks aver¬
age as well as the overall average, the
conclusions that were drawn based on
the results remain the same.
—Peter G. Aitken
ERRATA
The board that appeared in photo 13
(on page 62) of “RT PC: A Significant
Departure” (Thomas V. Hoffmann, De¬
cember 1986, p. 56) is actually the RT
Monochrome Display Adapter, not the
RT Multiport Communications Adapter
(MCA). The MCA is pictured below.
In “Photo Plotting,” the sidebar to
“End-to-End Design” (Richard Angell,
December 1986, p. 155), the first sen¬
tence of the second paragraph should
say “With the introduction of computer-
aided design (CAD), handtaping is re--
placed by pen plotting.” I "iTTmim m
COMMENT AT WILL
All letters to the editor should be
directed to Editor, PC Tech Journal ,
Suite 800, 10480 Little Patuxent Park¬
way, Columbia, MD 21044. Corre¬
spondence also can be submitted
over MCI Mail to PCTECH.
Although PC Tech Journal can¬
not publish every letter received,
every attempt is made to answer as
many as possible. Please keep letters
brief and to the point, and include
name, mailing address, and tele¬
phone number; when a letter is
lengthy, a diskette is appreciated.
PC TECH JOURNAL
Macro Assembler
The quickest Bar none*
Our Macro Assembler has long been the
most complete package on the market. Now
it’s also the fastest. Three times faster than
before. And faster than anyone else. Period.
Of course, it’s still the most powerful assem¬
bler on the market. It supports the standard
8086/8087 opcodes. And the new 186/286/
287 instruction set. So you can make the
most of the new machines.
Debugging is quicker, too. Thanks to our
interactive symbolic debugger, SYMDEB.
Now you can refer to variables and source
code instead of getting lost in hex dumps.
And this debugger also works with Microsoft
languages like C, FORTRAN and Pascal. So
now you can set breakpoints and trace exe¬
cution-using source code for reference.
not only thorough, they’re clearer than ever
before.
For quick development and assembly, the
choice is obvious. Microsoft. There’s nobody
faster.
Microsoft® Macro Assembler Version 4.0 for MS-DOS®
Macro Assembler
♦ Fastest macro assembler for MS-DOS computers.
♦Supports the 8086/8087/8088 and the 186/286/287.
♦ Define macros.
♦ Conditional assembly.
♦ Optional case sensitivity for symbols.
♦ 100% upward compatibility from earlier versions of both the
Microsoft and IBM® Macro Assemblers.
Interactive Symbolic Debug Utility
♦ Source level debugger for programs written in Microsoft
Macro Assembler, C Compiler, FORTRAN, and Pascal.
♦ Screen swapping helps debug highly visual applications.
♦ Set breakpoints on line numbers and symbols.
♦ Single step to follow program execution.
♦ Disassemble object code.
♦ Display and modify values.
♦ Full I/O redirection.
-V .18
18:
11: 18
12:
13:
DO 10 I : 1,8191
FLACS(I) = .TRUE.
W 91 I-1J191
IF1.N0T. FLAGS(D) GO 10 91
14:
PRINE : I ♦ I U
15: 288
lb
17:
F0RNAK1X.I6)
COUNI = COUNT ♦ 1
K -- I ♦ PRINE
-bp .14 V
il
PRINE •
1AEF:0069 A16240 NOV AX,140621
1AEF:006C 83C8 AN) AX,AX
;BR8
1AEF:006E 48
INC AX
1AEF:006F A36440 NOV 140641,AX
16:
COUNT r COUNT ♦ 1
1AEF:0072 F7066048 INC UoM Ftp 140601
17:
K : I ♦ PRINE
-?no‘ 4062
0001 h 00000081 (1) V
COUNT : COUNT ♦ 1
J
Cut your development time dramatically. Microsoft Macro Assemblers
Symbolic Debug utility lets you debug your Macro Assembler programs, or
debug your Microsoft C, FORTRAN or Pascal programs using your original
source code or the resulting disassembly. For example, you can set break¬
points on line numbers and observe the contents of variables or expressions.
SYMDEB is just part of our complete set
of utilities. Tools that make programming as
fast as it should be. There are the linker and
library managers you’d expect. Plus a new
version of MAKE, our maintenance utility,
with improvements like macro expansions
and inference rules.
We’ve also revised the manuals. Our new
Macro Assembler has a lot to offer, so we
added more examples. Now our manuals are
Microsoft® Macro Assembler Version 4.0 for MS-DOS®
Macro Assembler
♦ Fastest macro assembler for MS-DOS computers.
♦Supports the 8086/8087/8088 and the 186/286/287.
♦ Define macros.
♦ Conditional assembly.
♦ Optional case sensitivity for symbols.
♦ 100% upward compatibility from earlier versions of both the
Microsoft and IBM® Macro Assemblers.
Interactive Symbolic Debug Utility
♦ Source level debugger for programs written in Microsoft
Macro Assembler, C Compiler, FORTRAN, and Pascal.
♦ Screen swapping helps debug highly visual applications.
♦ Set breakpoints on line numbers and symbols.
♦ Single step to follow program execution.
♦ Disassemble object code.
♦ Display and modify values.
♦ Full I/O redirection.
Program Maintenance Utility
♦ Rebuilds your applications after your source files have
changed.
♦ Similar to UND(™ MAKE utility.
♦ Supports macro definitions and inference rules.
Library Manager
♦Create, organize and maintain your object module libraries
created with Microsoft languages.
♦Set page size from 16 to 32678, to create compact and
granular libraries.
Object Code Linker
♦ Simple overlaying linker combines relocatable object
modules created using Microsoft languages into a single
program.
♦ Load Map generation.
♦ Specify from 1 to 1024 segments.
Cross-Reference Utility
♦ Creates a cross-reference listing of the definitions and
locations of all symbols used in an assembly language
program, which makes debugging programs easier.
Microsoft EXE File Compression Utility
♦ Packs EXE files for smaller size on disk and faster loading
at execution time.
Microsoft EXE File Header Utility
♦ Display and modify EXE file header, allowing you to tune
the stack size and initial memory allocation.
For the name of your nearest Microsoft
dealer call (800) 426-9400. In Washington
State and Alaska, call (206) 882-8088. In
Canada, call (416) 673-7638.
Microsoft.
The High Performance Software™
CIRCLE NO. 237 ON READER SERVICE CARD
Microsoft and MS-DOS are registered trademarks and The High Performance Software is a
trademark of Microsoft Corporation. IBM is a registered trademark of
International Business Machines Corporation. UNIX is a trademark of AT&T Bell Laboratories.
helps save time, money and cut frustrations. Compare, evaluate, and find products.
RECENT DISCOVERY
The Documentor - for dB ASE program
flow chart, tree diagrams,. DBF documen¬
tation, variable/field concordance,
hierarchy charts. Macros, searches,
configure options._ MS $ 295
Al-Expert System Dev t
Experteach-Improved, samples PC $ 349
EXSYS PC $ 339
Insight 2 + - dB2, language MS $ 389
Texas Instruments:
PC Easy PC $ 439
Personal Consultant Plus_ PC $2599
Al-Lisp
Microsoft MuLisp 85 MS S 179
PC Scheme LISP - by TI. SCHEME has
simple, “orthogonal” syntax. PC $ 85
TransLISP-Good for learning MS $ 85
TransLISP PLUS -
Optional Unlimited Runtime $ 150
PLUS for MSDOS $179
Others: IQ LISP ($155), IQC LISP ($269)
Al-Prolog
APT - Active Prolog Tutor - build
applications interactively PC $ 65
ARITY Standard - full, 4 Meg
Interpreter - debug, C, ASM PC $ 319
COMPILER/Interpreter-EXE PC $ 699
With Exp Sys, Screen - KIT PC $1129
LPA MacProlog - Complete incremental
compiler and an interpreter MAC $ 295
LPA MicroProlog - intro MS $ 85
LPA MicroProlog Prof. - full
memory MS $ 339
Prolog-86 - Learn Fast MS $ 89
Prolog-86 Plus - Develop MS $ 229
TURBO PROLOG by Borland PC $ 69
Editors for Programming
BRIEF Programmer’s Editor
PC
Call
EM ACS by UniPress - Source: $929
$
299
Epsilon - like EMACS
PC
$
155
Kedit - like XEDIT
PC
$
105
Lattice Screen Editor
MS
$
109
PC/VI - by Custom Software
MS
$
109
Personal REXX -
PC
$
109
PMATE - power, multitask
PC
$
109
SPF/PC - fast, virtual memory
PC
$
139
XTC - multitasking
PC
$
79
FEATURES
PolyBoost - Run 2 to 10 times
faster with software accelerator.
Speeds disk access, screen display,
keyboard input. PC $ 69
C Scape - capture Dan Bricklin’s,
1 -2-3. Turbo screens & more, convert
to C. Plus full screen generation
package - tiled, pop-up windows with
scrolling, validation. Source PC $179
Note: All prices subject to change without notice.
Mention this ad. Some prices are specials. Ask about
COD and POs. Formats: 3" laptop now
available, plus 200 others. UPS surface shipping
add S3/item.
National Accounts
MIS, Engineering, and Research departments get
special FREE consulting, product comparisons,
reports, newsletters. Compare approaches to
COBOL, C, AI. PURCHASING AGENTS - get
help and special service finding products, negotiat¬
ing license agreements, with billing and more.
Call 800-446-1185.
Our Services:
• Programmer’s Referral List • Dealers Inquire
• Compare Products * Newsletter
• Help find a Publisher • Rush Order
• Evaluation Literature FREE • Over 700 products
• BBS-7 PM to7 AM 617-826-4086 • National Accounts Center
C Support-Systems
Basic-C Library by C Source MS $139
C Sharp - well supported. PC $600
C ToolSet - DIFF, xref, source MS $ 95
The HAMMER by OES Systems PC $149
Lattice Text Utilities PC $ 89
Multi-C - multitasking PC $149
PC LINT-checker. Amiga $89, MS $107
SECURITY LIB - add encrypt to MSC.
C86 programs. Source $229 PC $115
Quickshell - script compiler PC $349
Fortran & Supporting
50: More FORTRAN - math, source $ 99
ACS Time Series $419
Forlib + by Alpha - graph, comm. $ 59
MACFortran by Microsoft $229
MS Fortran link to C $209
No Limit - Fortran Scientific $115
R/M Fortran - enhanced “IBM Ftn” $389
Scientific Subroutines - Matrix $139
Multi Language Support
BTRIEVE ISAM MS $199
BTRIEVE/N - multiuser MS $469
CODESIFTER - Profiler MS $ 99
Dan Bricklin’s Demo Program PC $ 65
HALO Graphics -115+ device
interfaces, rich, printer. Specify
language interface PC $209
Informix - by RDS PC $639
Informix 4GL - application
builder PC $799
Microsoft Windows Software
Development Kit PC $329
Opt Tech Sort - sort, merge MS $119
PANEL - Xenix $539 MS $229
Pfinish Performance Analyzer MS $249
PLINK-86 - a program-independent
overlay linker to 32 levels. MS $249
PLINK-86 PLUS - incremental MS $369
PolyLibrarian by Polytron MS $ 79
PVCS Version Control MS $329
Screen Sculptor-slick, thorough PC $ 99
C Libraries-Communications
Asynch by Blaise PC $135
Greenleaf Comm Lib. PC $149
Multi-Comm - add multitasking, use
w/Multi-C PC $149
Software Horizons pack 3 PC $ 119
RECENT DISCOVERY
r-tree - report generation for
ctree. Multiple handling, fixed or
variable length. Many built-in functions
like Boolean, computational functions,
string, date handling, numeric to
string conversion. Layout control.
Source in C. PC $249
1 C Language-Compilers
AZTEC C86 - Commercial
PC
$
499
C86 by Cl - 8087, reliable
MS
$
299
Datalight C - fast compile, good
code, 4 models, Lattice compatible,
Lib source. Dev’rs Kit
PC
$
77
HOT C - new, intriguing
PC
$
85
Lattice C - from Lattice
MS
$
289
Mark Williams - w/debugger
MS
$
369
Microsoft C 4.0 - CodeView
MS
$
279
Wizard C - full, fast.
MS
$
359
C Language-Interpreters
C-terp by Gimpel - full K & R MS $ 229
C Trainer by Catalytix PC $ 89
INSTANT C - Source debug,
Edit to Run-3 seconds, .OBJs MS $ 379
Interactive C - interpreter, editor PC $ 225
Introducing C-learn C quickly PC $ 105
Run/C Professional - MS $ 179
Run/C Lite MS $ 97
C Libraries-General
Blackstar C Function Library PC $ 79
C Essentials by Essential PC $ 83
C Food by Lattice-ask for source MS $ 99
C Scientific Subroutines-Peerless MS $ 135
C Tools Plus (1&2) - Blaise PC $ 135
C Utilities by Essential - Comprehensive
screen graphics, strings. Source. PC $ 137
C Worthy Library MS $ 269
Entelekon C Function Library PC $ 119
Greenleaf Functions-portable, ASM $ 139
PforCe by Phoenix - objects PC $ 229
C Libraries-Files
FILES: C Index by Trio - full B +
Tree, vary length field, multi compiler
/File is object only MS $ 89
/Plus is full source MS $ 319
CBTREE-Source, no royalties MS $ 99
CTree by Faircom-no royalties MS $ 319
dbQUERY-adLoc, SQL-based MS $ 159
dbVISTA - full indexing, plus optional
record types, pointers. Network.
Object only - MS C, LAT, C86 $ 155
Source - Single user MS $ 425
Source - Multiuser MS $ 845
dBASE Tools for C PC $ 65
dbc Isam by Lattice MS $ 179
dBx - translator MS $ 319
w/source to library MS $ 499
FEATURE
Uniware Cross Development Tools -
include 68000 C compiler. Development
Package with compiler, assembler, link
editor, and utilities. 17 cross assemblers
for Intel, TI, Motorola, Zilog, etc. -
relocatable, macros. MS Call
We support MSDOS (not just compatibles), PCDOS, Xenix-86, CPM-80, Macintosh, Atari ST, and Amiga.
CIRCLE NO. 162 ON READER SERVICE CARD
provides complete information, advice, guarantees and every product for Microcomputer Programming.
Special Features
Finally . . . Easy Screen Handling for COBOL Saves Time,
Adds Flexibility: Screenplay
Menus, Help, and Data Entry Screens can be created (‘‘painted”) interac¬
tively. When you are satisfied Screenplay performs all screen handling for
you in any of more than 9 compilers.
Save valuable time by avoiding the tedious, time consuming process of
writing screen handling source code. Screenplay’s easy-to-use panel painter
allows you to create I/O panels, pop-up windows or menu panels.
True screen handling flexibility is yours. Override default panel settings
to design practically any type of screen imaginable — even change just
about any panel characteristic at runtime .
Prototype your draft screens before you write a single line of COBOL
source code. In addition, you can link Screenplay by interrupt or directly
to your application. And if your compiler doesn’t allow a direct link, use
the dynamic load option for linking Screenplay to your application.
You can assign practically any keyboard key to serve as a specific cursor
function and define exactly which keys will return control to your applica¬
tion . Entirely reconfigure the keyboard for your program.
Screenplay’s panel painting process is a one step approach. There’s no
need to go through a separate process to establish fields on your I/O panel.
What’s more, you can use any ASCII character in your Screenplay panels.
You also have full control over character attributes such as foreground and
background color, intensity, and blinking.
Panels are stored in a compressed ASCII file save memory and disk space.
Copy panels across and within files, rename, delete, test and print panel de¬
tails. Even print an image of the panel for your documentation. No royalties.
Not copy-protected. Supports IBM, MS, Realia, Ryan-McFarland (includ¬
ing 8X) COBOL.
201-895-4724 PCDOS List: $175 Ours: $155
Multitasking, Windowing for C, Turbo Pascal, or dBASE or...
in only 12K!
SYNERGY Development Toolkit
The highly efficient design of Synergy by Matrix gives you the benefits
of powerful graphics, windows, pull-down menus, dialog boxes, sophisti¬
cated text and icon management, math support, multitasking, and SPEED,
all for an incredibly small 12K RAM requirement.
The Synergy Runtime provides character and graphics support for menus,
windows, dialog boxes, and more, so you can write programs that work in
either mode, with very reasonable, low runtime fees.
Functions include: window management with capabilities like tile and
overlap, variable size and placement, process management, to support mul¬
titasking and sub-process generation, menus, dialog, and icon management,
graphics, text (including a variety of fonts and sizes), and console manage¬
ment.
The Synergy Development Toolkit is a collection of sophisticated tools de¬
signed for software developers writing new applications using Synergy, or
modifying existing applications to take fiill advantage of Synergy. Tools in¬
clude: graphics resource editor for creating and modifying icons and text
fonts, graphics resource compiler to construct and manage resource data
files, font compiler and manager, debugging tools, sample library, and
more.
Supports IBM or Microsoft Macro Assemblers, Turbo, IBM, and Micro¬
soft Pascal, IBM and Microsoft BASIC, Lattice and Microsoft C, and
dBASE II and III. CGA, EGA, and Hercules monochrome graphics
support.
nflmAmx
PCDOS List: $395 Ours: $375
617-567-0037
Expert System Shell & Language
Screen Management
0 ? S ADDON
Add AI Power to Existing Applications
Insight 2 +
“Insight 2 + is an awesome system . . . this may well be the best expert
system generator on the market.”—ONLINE
Choose a knowledge engineering tool that makes your current database sol¬
utions work smarter with a built-in PASCAL-like knowledge engineering
grammar that minimizes your training time. Insight 2+ works with your
installed software and database and has intrinsic dBASE II and III operators.
plus Level Five’s powerful, flexible Production Rule Language.
Insight 2+ is a highly connective, integrated expert systems shell that
adapts to your needs. Its detailed interactive reporting system lets you see
inside the reasoning process of the knowledge base. You can see reports on
the lines of reasoning, known and unknown facts, alternate rule pathways
to a shared conclusion, or knowledge trees, showing all possible goals, con¬
clusions, and paths of reasoning hierarchically — and more. You can even
step forward and back in a rule chain from beginning to end.
Create “what-if’ scenarios by saving, editing, and re-using knowledge
base contexts, or customized reporting to track end-user sessions.
Insight 2 + performs backward and forward chaining inference, supported
by object attribution and goal outlining, outside program activation, and full
parameter passing capabilities.
Insight 2 + supports very large knowledge bases which can be linked —
the number limited only by disk space. Full scientific and math capabilities
include logarithmic and trigonometric functions and floating point notation;
ideal for engineering and scientific applications.
305-729-9846 PCDOS List: $485 Ours: $389
Get a Cleaner, Faster, User
Interface with
The Screen Ace Form Master
Coded in assembler to give you the
power for creative design, and the
speed not available in other packages.
Form Master supports all 256 color
and monochrome attributes. Paint
screens with the screenbuilder (allows
changes without recompiling!) and
save to a DOS file, define screens
within your program at runtime, or
combine these techniques, to modify
screens on the fly.
400+ lines and 2000+ fields per
screen; the number of screens limited
only by available memory.
Permits flexible function key defini¬
tion, toggling field colors and attri¬
butes at runtime. Switch between
screens without losing data.
DESQview, TopView, MS Win¬
dows compatible. Lattice, MS C (all
models), APL*Plus/PC, Assembler.
Call for a $3 demo with tutorial.
PCDOS List: $195 Ours: $179
818-989-5329
NOW: Full Shell Programming
with MSDOS:
PolyShell with
UNIX-Like Utilities
PolyShell gives you a UNIX-com¬
patible command environment PLUS
a full set of UNIX-like utilities — yet
DOS commands and batch files are al¬
ways immediately accessible.
Alias and Command Macro Sub¬
stitution save keystrokes, let you ac¬
cess and customize DOS internal
commands. With History Substitu¬
tion, edit, re-execute previous com¬
mands or portion of command.
‘C-Shell’ and Bourne Shell compati¬
ble I/O redirection, very flexible
filename expansion capabilities.
Includes 30 powerful utilities from
the UNIX world (like grep, diff, sed,
cut, paste). Shell and utilities can be
loaded separately. Requires only 30K
RAM total. PolyShell is NOT UNIX;
no UNIX license needed.
PCDOS List: $149 Ours: $129
503-645-1150
Call for a catalog, literature, advice and service you can trust
Bhours m
8:30 AM-8:00 PM EST.
800 - 421-8006
THE PROGRAMMER’S SHOP™
5- 1 *Pond Park Road, Hingham, MA 02043
Mass.: 800-442-8070or617-826-7531 1/07
"The scope and detail of services you provide are
exemplary — it’s obvious you have given a lot
of thought to what information people need . . .
For someone like myself, critical appraisals of
software and comprehensive collections of offer¬
ings such as you have are really useful.”
A. Bruce Cyr
Foundation of American College
of Health Care Administrators
CIRCLE NO. 151 ON READER SERVICE CARD
The fastest, tightest code
We have to tell you, we had a hard
time getting the name down this short.
Because Microsoft’s new FORTRAN
Compiler actually has a far longer
list of features.
It uses the same optimizer and
code generator technology that made
our C Compiler the industry leader.
And we’ve added special loop
optimizations that give you the
smallest, fastest FORTRAN code a
PC can handle.
“Now Microsoft’s FORTRAN Opti¬
mizing Compiler generates such
fast code that an IBM PC/XT
approaches the speed of the VAX!’
Peter Osgood, MIT, Project Athena, Director of the
Real Time Lab Project.
This compiler has already passed
the toughest test there is. It’s been
Microsoft FORTRAN Optimizing Compiler Version 4.0.
♦ Full ANSI FORTRAN 77 Compiler with Fastest Executable Code for
MS-DOS. NEW!
♦ Uses the Microsoft C optimizing technology,plus loop optimization. NEW!
Execution Speed Microsoft Ryan-McFarland IBM Professional
(in Seconds) FORTRAN FORTRAN FORTRAN
v. 4.0 v.2.11 v. 1.22
Sieve 7.97 9.33 38.51
Whetstone 53.82 58.67 79.04
Lookup 5.82 18.61 26.02
♦ Fully GSA certified for ANSI 77 compatibility with no errors at the
highest level. NEW!
♦ Numerous IBM VS and DEC VAX extensions. NEW!
♦ Microsoft CodeView: Window-oriented source-level debugger. NEW!
—Debug using your original source code, the resulting disassembly or
both intermingled.
—Watch and change the values of your local and COMMON variables
as you debug.
—Set conditional breakpoints on variables, expressions or memory; trace
and single step.
—Watch and change registers and flags as you execute.
— Easily debug graphics oriented programs since program output is kept
separate from debugger output.
GSA- certified as Full ANSI FORTRAN
77, and 100% error-free.
“The Microsoft FORTRAN Opti¬
mizing Compiler let us port the
200,000line Boeing Mathematical
Library (BCSLIB) with virtually no
changes. This ANSI FORTRAN 77
code was ported directly from Cray,
CDC, DEC, IBM and other main¬
frames and workstations”
Ivor Philips, Boeing Computer Services, Program Manager
k Mathematical Software Libraries.
We’ve also included the same
advanced intrinsic math func¬
tions found on VAX® and
IBM® VS systems. Add
%
%
-^C
°WeV, evv
improvements
like our new HUGE
memory model, and
biggest mainframe programs has
never been easier.
Among the many additions we’ve
made to our package is our exclusive
CodeView™ windowing debugger. It
lets you trace through programs at
any level you want, from source
code to assembly language.
You can open windows, and watch
both variables (local and COMMON)
and CPU registers change. You can
set conditional breakpoints using
variables and expressions.
Debugging gets even easier with
the compiler’s advanced diagnostics.
Detailed error messages are
thoroughly explained and cross-
referenced in our new manuals.
Documentation that has been
completely revised and expanded
with tons of examples.
If we’re talking your language, use
one of the numbers below for more
details about the Microsoft® ANSI
FORTRAN 77 Optimizing Compiler
Version 4.0 with CodeView,
\ and the name of your
nearest dealer.
(Even if the call’s toll-free,
it may be a good idea to refer to it as
“FORTRAN 4” for short.)
Mcrosoft* FORTRAN
The High Performance Software.
Call (800) 426-9400. In Washington State or Alaska, (206) 882-8088. In Canada,
(416) 673-7638.
Microsoft and MS-DOS are registered trademarks and CodeView is a trademark of
Microsoft Corporation. IBM is a registered trademark of International Business
Machines Corporation. VAX is a registered trademark of Digital Equipment Corporation.
♦ Medium, Large and Huge Memory Model Libraries. NEW!
♦ Mix models with NEAR, FAR and new HUGE pointers.
♦ Common blocks and arrays greater than 64K.
♦ Choose from three math libraries and generate in-line 8087/80287
instructions or floating point calls:
—floating point emulator (utilizes 8087/80287 if installed)
—8087/80287 coprocessor support
—alternate math package—extra speed without an 8087/80287
♦ Link your FORTRAN routines with Microsoft C (v. 4.0 or higher), Microsoft
Pascal (v. 3.3 or higher) or Microsoft Macro Assembler.
♦ Largest number of 3rd party support libraries available.
♦ Provides more detailed diagnostic error messages (almost twice as many
as competitors) and extensive documentation with non-ANSI 77 fea¬
tures highlighted. NEW!
♦ Proven reliability—tested with over 2.5 million lines of code compiled
and executed.
♦ MS-DOS® network support with file/record locking and sharing.
♦ Microsoft Program Maintenance Utility rebuilds your applications
after your source files have changed. NEW!
♦ Other utilities including faster overlay linker (links over 1Mbyte object
code), library manager, EXE file compression utility, EXE file header
utility, MS-DOS environment setting utility and setup utility.
CIRCLE NO. 205 ON READER SERVICE CARD
The fastest C
Your search for execution speed is over.
The new Microsoft® C Compiler Version 4-0
is here. With blazing performance. We’ve
added common sub-expression elimination
to our optimizer that produces code that
rips through the benchmarks faster than
ever before.
“... the Microsoft performance in the benchmarks
for program execution is the best of the lot overall’.’
—William Hunt, PC Tech Journal, January, 1986*
But speed isn’t the only edge you get with
Microsoft C. Other advantages include a vari¬
ety of memory models like our new HUGE
model that breaks the 64K limit on single
data items. Plus our NEAR, FAR and HUGE
pointers, which provide you greater flexibility.
All this allows you to fine tune your program
to be as small and fast as possible.
“Excellent execution times, the fastest register
sieve, and the best documentation in this review
... Microsoft Corporation has produced a
tremendously useful compiler.”—Christopher
Skelly, Computer Language, February 1986.
No more debugging hassles.
Introducing CodeView. Free.
Now, for a limited time, we’ll give you an
unprecedented programming tool when you
buy Microsoft C, free. New Microsoft Code¬
View™ offers the most powerful tool yet in
the war on C bugs. Forget the hex dumps.
Now you can view and work with programs
at any level you want. Use the program
source, the disassembled object code, or
Microsoft C Compiler Version 4.00
Microsoft C Compiler
♦ Produces fast executables and optimized code including elimination
of common sub-expressions. NEW!
♦ Implements register variables.
♦ Small, Medium and Large Memory model libraries.
♦ Compact and HUGE memory model libraries. NEW!
♦ Can mix models with NEAR, FAR and the new HUGE pointers.
♦ Transport source and object code between MS-DOS® and XENIX®
operating systems.
♦ Library routines implement most of UNIX™ System V C library.
♦ Start-up source code to help create ROMable code. NEW!
♦ Full proposed ANSI C library support (except clock). NEW!
♦ Large number of third party support libraries available.
♦ Choose from three math libraries and generate in-line 8087/ 80287
instructions or floating point calls:
— floating point emulator (utilizes 8087/80287 if installed).
— 8087/80287 coprocessor support.
— alternate math package — extra speed without an 8087/80287-
♦ Link your C routines with Microsoft FORTRAN (version 3.3 or
higher), Microsoft Pascal (version 3.3 or higher) or Microsoft
Macro Assembler.
♦ Microsoft Windows support and MS-DOS 3.1 networking support.
♦ Supports MS-DOS pathnames and input/output redirection.
Microsoft Program Maintenance Utility. NEW!
♦ Rebuilds your applications after your source files have changed.
♦ Supports macro definitions and inference rules.
Other Utilities
♦ Library Manager.
♦ Object Code Linker.
♦ EXE File Compression Utility.
♦ EXE File Header Utility.
C Benchmarks , n seconds
Sieve of
Eratosthenes
Microsoft
C 4.0
Lattice
C 3.0
Computer
Innovation
C 2.3
Aztec
C86 3.2
Wizard
C 3.0
(register)
82.9
151.4
172.3
88.0
91.9
Copy Block
86.9
231.7
199.0
123.8
189.5
Run on an IBM PC XT with 512K memory
Microsoft CodeView
Window-or iented source-level debugger. NEW!
♦ Watch the values of your local and global variables and expressions
as you debug.
♦ Set conditional breakpoints on variables, expressions or memory;
trace and single step.
♦ Watch CPU registers and flags as you execute.
♦ Effectively uses up to four windows.
♦ Debug using your original source code, the resulting disassembly
or both intermingled.
♦ Use drop-down menus to execute CodeView commands.
♦ Access the on-line help to lead you through CodeViews options
and settings.
♦ Easily debug graphics-oriented programs since program output is
kept separate from debugger output.
♦ Keyboard or optional mouse support.
♦ Enter in familiar SYMDEB or DEBUG commands.
‘Reprinted from PC Tech Journal, January 1986, copyright 1986, Ziff-Davis Publishing.
youve ever seen.
both at the same time. Open a window to
view CPU registers and flags. Watch local
and global variables as well All while your
program is running.
CodeView gives you complete control.
Trace execution a line at a time—using
source or assembly code. Or set conditional
breakpoints on variables, memory or expres¬
sions. CodeView supports the familiar
SYMDEB command syntax, as you’d expect.
Commands are also available through drop¬
down menus. Combine the new window-
oriented interface with our on-line help and
debugging has never been easier. Or quicker.
Take the $5 CodeView tour.
You may find it hard to believe our debug¬
ger can do all we’ve claimed. So we’re offering
test drives. Five bucks will put you behind
the wheel of a Microsoft C demo disk with
CodeView. 1- See for yourself how fast debug¬
ging can get.
For more information about the Code¬
View demo disk, the new Microsoft C
Compiler, a list of third party library sup¬
port or the name of your nearest Microsoft
dealer, call (800) 426-9400. In Washington
State and Alaska, (206) 882-8088. In Canada
call (416) 673-7638.
File Search Uieu Run Watch Options
Calls
Trace? Go?
=j roath.c f=
0) island : 244
1) tiszeroO ‘ 1
2) 4034:0000 00 00 00 00 00 00 00 00 43
arctan(2)
nain(2,12782)
72
3BB5:00EE
3BB5:0BF1
33)B5:00F4
3BB5:00F5
13:
3DB5:88F8
14:
3DB5:80FD
3DB5:0BFE
3DB5:0181
15:
3DB5:8104
16:
3DB5:0107
17:
B80200
E89402
56
8B7604
t [ 0 ] =
C686441A01
diu(s) )
56
E82601
83C402
add();
E84D88
island
C746FE0100
do i
HOC
CALL
PUSH
M0U
AX,0002
_chkstk (0388)
SI
SI,Word Ptr IBP+04I
i;
HGU
PUSH
CALL
ADD
Byte Ptr [_t (1A44)],01
/* t[] = 1/s */
s
_diu (0227)
SP,+02
CALL
= i;
H0U
_add (0154)
Word Ptr I is land 1,0001
;BR8
>da 33 0x29
4834:0021 Microsoft
>
pi.exe
AX = 0002
BX = 3 ICC
CX = 00F4
DX = 1E88
P SP = 31CA
5 BP = 31CE
1 SI = 0802
1 DI = 32A8
I DS = 4034
I ES = 4034
1/ SS = 4034
I CS = 3DB5
j IP = 00F8
i nourflou
up
1 enable
v; positive
| not zero
no auxcy
odd
Microsoft* C Compiler
The High Performance Software
Microsoft. MS-DOS and XENIX are registered trademarks and CodeView is a trademark of Microsoft Corporation. UNIX is a
trademark of AT&.T Bell Laboratories. IBM is a registered trademark of International Business Machines Corporation. tOffer expires 12/31/86.
CIRCLE NO. 140 ON READER SERVICE CARD
For years BASIC has been everyone’s first
language. And for almost as long, they’ve been
tempted by other languages. Lured by promises
of more speed, more power.
We have a solution. A new language that’s a
substantial improvement over BASIC A. Faster.
More structured. Finally, a compelling reason to
leave BASIC.
Introducing Microsoft’s QuickBASIC
Compiler, Version 2.0.
At last, you can have the latest programming
techniques, combined with the solid foundation
of BASIC. Our new compiler is as compatible
with BASICA as you can get. At the same time
it offers the extra speed and power you’ve been
looking for.
Run faster with compiled code.
If there’s one thing you’ve asked for, it’s speed.
And Microsoft® QuickBASIC simply blazes.
Old BASICA programs will run up to ten times
quicker once they’ve been compiled. Sometimes
even faster.
Everything you need. Built-in.
Making programs run faster is only part of the
story, though. The new Microsoft QuickBASIC
Compiler includes a full-screen editor, built-in.
So now you can make the jump from writing to
RUNning in no time flat. Edit your program,
compile it, and run it. Faster than any other
BASIC compiler around. All without leaving
our on-line help and prompts.
SUB Bra wS tar (cx,ey,radius,theta) STATIC
dx = radius * cos (theta)
dy = radius * sin (theta)
1ine(cx,cy)-(cx+dx,cy+dy)i2
end sub
Run
Find...
Selected Text *T
Repeat Last Find F3
Change...
NEXT theta
Label
theta =0 TO 2*
CALL BrawStarCc
Next Error F6
Microsoft is a registered trademark and The High Performance Software is a trademark of Microsoft Corporation. IBM is a registered trademark of International Business Machines Corporation.
leaving BASIC for.
On the rare chance your program doesn’t run
100% the first time out, we’ve got another sur¬
prise for you. The Microsoft QuickBASIC de¬
bugger. Our full-screen tracing lets you
debug your programs while watch¬
ing the source code execute. A line
at a time, or with breakpoints. As
easy as can be.
Our compiler is also smart enoug
to save you time. First, by finding any
errors in one pass. Second, by putting your
editor’s cursor on the problem. Automatically.
So you don’t have to get lost in a maze of error
codes and line-numbers.
Microsoft QuickBASIC Compiler Version 2.0
for IBM® PC and Compatible Computers.
BASICA Compatibility
♦ Sound statements including SOUND and PLAY.
♦ Graphics statements including WINDOW VIEW DRAW
GET, PUT, LINE, CIRCLE, LOCATE and SCREEN.
♦Support of EGA extended graphics modes. NEW!
♦ BASICA structures are supported including WHILE/WEND,
IF/THEN/ELSE, FOR/NEXT, GOSUB/RETURN, and
event handling.
Microsoft
Results of Sieve Benchmark BASICA 3.1 QuickBASIC 2.0
Seconds per iteration 78 0.52
Complete Programming Environment
♦ Built-in Editor that places the cursor on found errors auto¬
matically. NEW!
♦ Compile entirely in memory at speeds up to 6000 lines per
minute. NEW!
The BASIC virtues. And more.
Speaking of line numbers, let’s not. Because
line numbers are strictly optional. And Microsoft
QuickBASIC lets you use alphanumeric labels
as well. Now you can GOTO ErrorCheck instead
of line number 6815.
Or you could stop using GOTOs altogether.
There are a variety of options that could make
the GOTO an endangered species. Features like
multi-line IF-THEN blocks. And named sub¬
programs. Now your BASIC programs can be
as structured and organized as you want.
We’ve only just begun to talk about the
virtues of Microsoft QuickBASIC. There are
dozens of enhancements to your favorite
language. Things like larger arrays. Local and
global variables. Reusable modules that let you
create libraries of your most often-used routines.
All explained in a revised manual that includes
a complete language reference.
Making your quick escape.
If all these features follow your BASIC
instincts, then zip on down to your nearest
Microsoft dealer. That’s where you’ll discover the
best surprise of all. The price. Only $99 for the
best reason to leave BASIC.
For the name of your nearest Microsoft dealer,
call (800) 426-9400. In Washington State and
Alaska, (206) 882-8088. In Canada, call (416)
673-7638.
Microsoft® QuickBASIC
The High Performance Software™
CIRCLE NO. 121 ON READER SERVICE CARD
♦ Link routines once when starting a programming session and
no need to link again when changing programs. NEW!
♦ Built-in debugger with single-step, animate, and trace modes.
NEW!
♦ Create stand-alone programs.
Alphanumeric Labels
♦ Can be used to make your programs more readable. Line
numbers are not required but are supported for BASICA
compatibility.
Structured Programming Support
♦ Block IF/THEN/ELSE/END IF eliminates the need for
GOTO statements. NEW!
♦ Subprograms can be called by name and passed parameters.
Both local and global variables are supported.
Modular Programming Support
♦ Separate compilation allows you to create compiled BASIC
libraries to use and re-use your programs.
♦ A library of routines to access DOS and BIOS interrupts is
supplied. NEW!
Large Program Support
♦ Code can use up to available memory.
♦Numeric arrays, each up to 64K bytes,
can use up to available memory.
NEW!
TECH RELEASES
Hardware, software, and other developments for the IBM PC family
Screeri produced with Conographic's ConoVision 2800 board
PCMS Director from Racet Computes, Ltd.
HARDWARE
The Net/One Universal Workstation
Series is a group of hardware and soft¬
ware products from Ungermann-Bass,
Inc., designed to develop a local area
network (LAN) for corporate use.
The Net/One 3270 NIUpc net¬
work interface unit (NIU) adapter card
enables a networked PC to run micro-
to-mainframe applications that are writ¬
ten to the IRMA (Digital Communica¬
tions Associates, Inc.) and IBM 3278/79
Emulation Adapter hardware (Ethernet
baseband version, $1,495; broadband,
2,145). Net/One 3270 PC software en¬
ables a PC/XT or PC/AT to function as a
full-featured, networked IBM terminal.
Net/One 3270 PC supports as many as
four 3270 terminal and printer sessions,
two asynchronous terminal sessions,
and one DOS application simultaneous¬
ly. Full support for the IBM 3270 PC
control program version 2.1 application
program interface (API) has been added
($295 per workstation). Net/One PC
Graphics software provides pro¬
grammed symbol support for the Net/
One 3270 PC and lets the user run as
many as four concurrent IBM graphics
sessions with an IBM CGA or EGA ($295
per workstation). Net/One Async PC is
communications software that allows
PCs to exchange data with asynchronous
resources on Net/One. A set of terminal
emulation products is included with the
Net/One Asynch PC application program
interface (API) to allow communication
with a variety of minicomputers ($1,200
per server when bundled with Micro-
stuf, Inc.’s Crosstalk XVI; $1,600 per
server when bundled with Crystal Point,
Inc.’s ^term— see SOFTWARE).
Working in conjunction with the
Net/One PC software, the Net/One
NIUpc adapter card provides server
support for as many as 96 users, server
support for diskless PCs, an extensive
log-on security system that is embedded
in network protocol, and a pop-up
window utility that allows connections
to Net/One resources to be made or
deleted and network print queues to be
viewed from within the PC application
(Ethernet baseband version, $1,095;
broadband, $1,745).
Ungermann-Bass also has intro¬
duced high-speed network bridges capa¬
ble of linking local or geographically
remote IBM-compatible token-ring LANs
to an Ethernet network. Available in
local and remote models, Net/One
Data Link Bridges provide protocol-
independent routing of data packets
among multiple types of LANs. Bridges
allow multiple communications proto¬
cols, such as Xerox Network System
(XNS), Transport Control Protocol/Inter¬
net Protocol (TCP/IP), International
Standards Organization (ISO), and Digi¬
tal Equipment Corporation’s DECnet to
operate over the bridge. Both the 3Com
Ethernet and IBM Token-Ring networks
can run on high-speed T-l telecommu¬
nications links between distant sites. All
remote bridges operate from 4.8 Kbps
to 2.048 Mbps. Baseband and broadband
versions of these data link bridges range
from $9,495 to $10,095. Software for
each model is $2,000.
Ungermann-Bass, Inc., 3900 Freedom
Circle, Santa Clara, CA 95052-8030;
408/496-0111
CIRCLE 301 ON READER SERVICE CARD
Racet Computes, Ltd. has announced
an expansion of its PCMS (personal
computer mass-storage) line of subsys¬
tems. The new products offer capacities
of between 148MB and 870MB in a sin¬
gle enclosure. Four basic configurations
are available: the Administrator, with
148MB formatted capacity; the Supervi¬
sor, with 200MB; the Manager, with
more than 300MB; and the Director,
with more than 400MB. Each configura¬
tion comes standard with 125MB
streaming-tape backup capability. The
ESMD controller operates at 2.4MB per
second and has .5MB of cache memory
that is expandable to 4.5MB. The aver¬
age access time is 18 milliseconds (ms)
for the Supervisor, Manager, and Direc¬
tor, and 25 ms for the Administrator.
Prices range from $7,950 to $39,900;
add-on 4MB cache, $3,750.
Racet Computes, Ltd., 1855 W. Katella,
Suite 255Orange, CA 92667;
714/997-4950
CIRCLE 310 ON READER SERVICE CARD
ConoVision 2800 is a desktop publish¬
ing board from Conographic Corpo¬
ration. The board combines a high-res¬
olution monochrome graphics adapter
and a raster image processor (RIP) for
doubling the resolution of popular laser
printers. The ConoVision 2800 can dis¬
play two-page spreads with true type¬
faces readable to as small as six points;
it can double the output of Hewlett-
Packard LaserJets to 600-by-300 dots per
inch (dpi), and has a resolution up to
2,880-by-l,024 pixels. Screen drivers en¬
able any software running under Micro¬
soft Windows to run under ConoVision
2800. Hardware for scrolling, panning,
and zooming is included. The board has
a Hercules-compatible mode and drives
19-inch professional (100 MHz) and
15-inch high-performance (50 MHz)
monitors. ConoVision 2800 with RIP,
$1,985; without RIP, $1,325.
Conographic Corporation, 17841 Fitch,
Irvine, CA 92714; 714/474-1188
CIRCLE 312 ON READER SERVICE CARD
Number Nine Computer Corpora¬
tion introduces its Pepper Graphics
System family with the pepper proi280.
The pro 1280 combines the Number Nine
Intelligent Operating System (a library
of on-board, device-independent graph¬
ics, video control, and advanced mem¬
ory-management functions) and the
Memory Windows architecture, which
allows mapping of IBM address space to
the pro 1280 display or instruction mem-
on', with Texas Instrument’s TMS 34010
32
PC TECH JOURNAL
GSP graphics coprocessor. It combines
noninterlaced 1,280-by- 1,024-pixel reso¬
lution and 256 on-screen colors with
IBM monochrome, CGA, and Profession¬
al Graphics Controller compatibility, in
a single-board, single-monitor system.
The board has 1.25MB of video RAM
(expandable to 8MB), 128KB of instruc¬
tion RAM, 128KB of graphics firmware,
and either a 4,096- or a 16-million-color
palette. The PRO 1280 features a l6-by-38-
pixel system font, as well as high display
resolution. $3,000.
Number Nine Computer Corporation,
725 Concord Avenue, Cambridge,
MA 02138; 6171492-0999
CIRCLE 307 ON READER SERVICE CARD
From Epson America, Inc. comes the
Image Scanner Option Kit, an acces¬
sory for Epson’s EX-800, EX-1000, and
LQ-2500 dot-matrix printers. The scan¬
ner reads and converts hard-copy
images into bit-image data, then trans¬
mits the data through a serial interface
to a host computer where they are
stored. The scanner offers a resolution
of 180-by-180 dots per inch (dpi) on the
LQ-2500, and l44-by-l44 dpi on the EX
series. A page of graphics can be
scanned or digitized at 27 inches per
second (ips) on the LQ-2500, and 25 ips
on the EX series. $299.95.
Epson America, Inc., Computer Products
Division, 2780 Lomita Blvd., Torrance,
CA 90505; 800/421-5426; in California,
213/539-9140
CIRCLE 303 ON READER SERVICE CARD
A family of laser page printers that is de¬
signed for shared resource environ¬
ments, the OmniLaser Series 2000,
has been announced by Texas Instru¬
ments. The OmniLaser 2015 has a
print speed of 15 pages per minute
(ppm), a maximum-duty cycle of 25,000
pages per month, and a machine life of
1.5 million prints. The OmniLaser
2115 uses the same 15-ppm print en¬
gine as the 2015; its PostScript control¬
ler with 3MB of RAM is built around the
32-bit Motorola 68000 chip. The Omni¬
Laser 2108 has an 8-ppm engine with a
duty cycle of 10,000 pages per month, a
600,000-print machine life, and a 68000-
based PostScript controller with 2MB of
RAM. OmniLaser 2015, $5,995; 2115,
$7,995; 2108, $5,995.
Texas Instruments, Data Systems Group,
P.O. Box 809063, H-861, Dallas ., TX
75380-9063; 800/527-3500
CIRCLE 304 ON READER SERVICE CARD
AST Research, Inc. has announced the
AST-5250/Gateway, a single board with
software that connects a LAN to an IBM
System/3x machine. This gateway allows
any LAN node to emulate 5250 terminal/
printer sessions without an emulation
card. The AST-5250/Gateway accommo¬
dates remote and local distribution sys¬
tems in peer-to-peer or host communi¬
cations link-ups. One microcomputer on
the LAN is equipped with the AST 5251/
11 Plus emulation card and a software
package that distributes 5250 terminal/
printer sessions to other nodes on the
LAN. A maximum of three Gateways can
coexist on the same LAN, and each Gate¬
way can communicate simultaneously to
a different host. Connections from the
Gateway are made via standard twin¬
axial cable for local hosts or SNASDLC
for remote hosts. $1,995.
AST Research, Inc., 2121 Alton Avenue,
Irvine, CA 92714-4992; 714/863-1333
CIRCLE 313 ON READER SERVICE CARD
Three networking products have been
introduced by Racore Computer
Products, Inc. The LANpac II, a high-
performance network system designed
for Novell Advanced NetWare, can be
connected in either a linear-bus or star
configuration using coaxial or twisted¬
pair cable. It operates at selectable
speeds of 4Mbit, 8Mbit, or 16Mbit per
second. As many as 250 LANpac stations
per cluster can be connected at a dis¬
tance of up to 1,000 feet between sta¬
tions. A diskless workstation incorpo¬
rating optional LANpac circuitry for use
in a PC/AT-compatible environment is
available. An Intel 80286, operating at 10
or 12 MHz, provides AT performance.
Available with LANpac directly inte¬
grated onto the main processor board,
the workstation can accommodate as
much as 2MB of memory. LANpac
802.5 is a plug-compatible IBM Token-
Ring adapter that can be incorporated
into an existing IBM Token-Ring Net¬
work. LANpac 802.5 transfers data at the
rate of 4Mbit per second using coaxial
or twisted-pair cable. LANpac II, $295
per node; diskless workstation, $850 to
$1,525; LANpac 802.5, $495 per node.
Racore Computer Products, Inc., 170
Knowles Drive, Los Gatos, CA 95030;
408/374-8290
CIRCLE 314 ON READER SERVICE CARD
Convergent Technologies has re¬
leased several products for its network
architecture, the Cluster. The Series
386 NGEN is an upgrade for current us¬
ers of Convergent’s NGEN workstations.
Existing applications and peripherals are
compatible with the new processor.
CTOS/VM, a PC-compatible version of
Convergent’s distributed multitasking
operating system, CTOS, supports multi¬
ple operating systems and their applica¬
tions. It also provides support for 80286/
80386 protected mode. The Cluster-
Card, which fits expansion slots on both
the PC/AT and PC, and ClusterShare
server software, provide network ser¬
vices, including electronic mail and re¬
source sharing, to PCs over ClusterNet.
TeleCluster piggybacks Cluster data on
standard voice signals over existing in-
house telephone wiring. The AT-com-
patible Network PC is designed to op¬
erate with or without local disk storage
on the Convergent Cluster, 3 Com
Ethernet, and other standard networks.
Its built-in functions includes EGA video
and up to 1MB of memory, in a desktop
design. Retail prices are not applicable;
Texas Instrument’s OmniLaser Series of laser printers
MARCH 1987
33
TECH RELEASES
80386-based Multireel) 1100 system
DF-1 coprocessor board from Data Flow Imaging, Inc.
all products are available in original
equipment manufacturer (OEM) quan-
tites and to value added retailers (VAR).
Convergent Technologies, 2700 N. First
Street, P.0. Box 6685, San Jose, CA
95150-6685; 408/434-2848
CIRCLE 311 ON READER SERVICE CARD
A graphics board that is designed to run
on the Sony Multiscan CPD 1302 moni¬
tor has been released by QDP Com¬
puter Systems, Inc. The viva iooo/scan
with a resolution of 1,000-by-600 pixels
and 16 simultaneous colors, displays a
high-resolution, flicker-free image; it
uses an NEC 7220A microprocessor.
Features that are built into the board in¬
clude hardware pan and zoom, and
user-selectable cursors and colors,
which are available via a single key¬
stroke. The viva iooo/scan can be up¬
graded to QDP’s 1000/16, which has a
resolution of 1,024-by-1,024 pixels and
drives 19-inch monitors. An available
upgrade permits the display of 256
colors simultaneously from a palette of
16.8 million. Under $1,300.
QDP Computer Systems, Inc., 23632
Mercantile Road, Beaclnvood,
OH 44122; 216/464-6600
CIRCLE 308 ON READER SERVICE CARD
Three low-cost interface boards that
permit accurate monitoring and control
of real world signals for the IBM PC,
PC/XT, and PC/AT have been announced
by Real Time Devices, Inc. The
AD500 and AD100 are 12-bit analog in¬
put boards, and the DG24 is a digital
I/O board. All three boards are designed
to fit into the PCs short slot. The AD500
has eight channels of 12-bit resolution
and an on-board amplifier with software
programmable gains of 1, 10, and 100. It
can digitize analog input signals at 7.5
conversions per second—providing very
high immunity to 60-cycle line noise.
The software-selectable analog input
ranges are ± 5 volts, ± 500 millivolts,
and ± 50 millivolts. The inputs are sin¬
gle-ended and are protected to 35 volts.
Seven TTL-compatible digital lines can
be configured as inputs or outputs arid
can be used to activate relays, sense
switch closures, or control other exter¬
nal devices. The AD 100 is a single-chan¬
nel version of the AD500 with three
additional I/O lines. The DG24 is a digi¬
tal I/O board based on the 8255 periph¬
eral interface chip with 24 TTL-compati¬
ble lines that can be configured in soft¬
ware as input or output lines. The board
can be configured to support handshak¬
ing. Interrupts are jumper-selectable.
AD500, $239; AD100, $149; DG24, $95.
Real Time Devices, Inc., 1930 Park For¬
est Avenue, P.O. Box 906, State College,
PA 16804; 814/234-8087
CIRCLE 317 ON READER SERVICE CARD
A 16-MHz, 80386-based microcomputer
has been introduced by Multitech
Electronics, Inc. The Multitech 1100
base system comes standard with 1MB
of RAM on the motherboard, a 1.2MB
diskette drive, a 40MB hard-disk drive
with a 28-millisecond average access
time, a diskette/hard-disk controller
board, a battery-backed clock/calendar,
one parallel and two serial ports, and a
101-key keyboard. The Multitech 1100
has space for five half-height 5^-inch
storage devices, a socket for an 80287/
80387 numeric coprocessor, and eight
expansion slots (two PC/XT-type, five
PC/AT-type, and one 32-bit dedicated
memory bus). Multitech 1100, $3,999;
with 80MB hard disk, $5,995; with
130MB hard disk, $6,495; Multitech en¬
hanced color graphics board, $379; en¬
hanced color display, $599.
Multitech Electronics, Inc., 1012 Stewart
Drive, Sunnyvale, CA 94086;
408/773-8400
CIRCLE 302 ON READER SERVICE CARD
The GV-386, a 16-MHz, 80386-based
machine, has been introduced by PC
Designs, Inc. Operating with zero wait
states when the cache is enabled, the
GV-386 uses standard DRAM rather than
the static column RAM. The GV-386
meets the I/O bus timing of the 8-MHz
PC/AT, to provide maximum compatibil¬
ity with existing add-on boards. Some
features include 64KB, 35-nanosecond
(ns) to 45-ns static RAM cache circuit,
an on-board cache circuit that can be
enabled/disabled via keyboard toggle,
switchable 8-MHz/l6-MHz clock speed,
and a specially designed AT-compatible
BIOS that allows for operation of BIOS
timing loops independent of CPU clock
speeds. Bundled with the GV-386 are
Quarterdeck Office Systems’ expanded
memory manager and DESQview ver¬
sion 1.3 multitasking environment.
GV-386 with 40MB hard disk, $3,950;
with 80MB hard disk, $4,325.
PC Designs, Inc., 2500 N. Hemlock
Circle, Broken Arrow, OK 74012;
918/251-5550
CIRCLE 305 ON READER SERVICE CARD
A coprocessor board for the PC bus that
contains four 5-MIPS (million instruc¬
tions per second) NEC |xPD7281 data¬
flow (token-passing) processors is avail¬
able from Data Flow Imaging, Inc. In
addition to the four data-flow proces¬
sors, the DF-1 board contains an NEC
pPD9305 memory access and general
bus interface chip and 128KB of local
image memory. The (xPD7281 processor
chip (nicknamed ImPP, for image-pipe-
lined processor) uses a 17-bit-by-17-bit
hardware multiplier for high processing
speed. A single ImPP can compute a 3-
by-3 convolution of a 512-by-512-pixel
(8 bits per pixel) image in 2.98 seconds;
two ImPPs will do the same convolution
in 1.5 seconds. DF-1 supports direct
memory access (DMA) transport of data
between the PC memory and the DF-1
image memory, and can be configured
to use interrupt-driven communications
with the PC’s CPU. DF-1, $995.
Data Flow Imaging, Inc., P.O. Box 116,
Westwood, NJ 07675; 201/666-7970
CIRCLE 309 ON READER SERVICE CARD
34
PC TECH JOURNAL
W
I JLASER PLUS
xillt combination!
Interface)
Other ingred
1 PC, XT, or AT it
computer
1 Canon-based JOi
I Canon IX*123(H
It makes desktop publishing
a piece of cake!
Tall Tree Systems
introduces another
breakthrough in desk¬
top publishing with
JLASER PLUS. We've
combined a 2 MB
EMS memory board
and an interface to
both a Canon®-based
laser printer and
scanner. JLASER PLUS
increases the perfor¬
mance of both devices
and gives you a low-
cost solution to the
limitations you've been
experiencing with
them.
Furthermore, the
same memory that is
made available to
your printer and scan¬
ner is also available for
all your other conven¬
tional applications.
You get system mem¬
ory, expanded LIM
memory, extended
memory in an AT-type
machine, RAM Disk
and print spooler —
all in a single slot!
Supporting JLASER
PLUS is a host of soft¬
ware packages, such
as PC Paintbrush +
from
Z Soft,
Dr. Halo D.P.E.
fro‘m Media Cyber¬
netics, LaserGL from
Software Express,
Ventura Publisher from
Xerox, Page Builder
from White Sciences,
Le Print from Le Baugh
Software, Fancy Font
and Fancy Word from
SoftCraft, Inc., and
many more
to be announced.
It takes a techno¬
logical innovator like
Tall Tree
Systems to
provide a major
advancement like
JLASER PLUS. And
we don't stop at
performance. We also
deliver value, which is
truly icing on the cake.
TALL TREE SYSTEMS
1120 San Antonio Road
Palo Alto, CA 94303
(415) 964-1980
CIRCLE NO. 194 ON READER SERVICE CARD
TALL TREE SYSTEMS
Canon k a rpnkfprpd trademark of Canon I nr All sofrwarp narkanes Ikrpd are trademarks, of fhpir resner th/e rnmnanies
(5) IQflA hv Tall Trpp <k/crpmc All rinhfc resented
..
SOFTWARE
A DOS extender and command inter¬
preter, PolyShell, has been introduced
by Polytron Corporation. PolyShell
adds a UNIX interface to DOS and is
invoked as a program under DOS that
may be exited or restarted at any time
without rebooting. Any DOS command,
including internal commands and batch
files, can be called from within Poly¬
Shell, as can UNIX-like commands. This
program includes more than 50 utility
programs such as split, which splits
large files into smaller files; whereis,
which searches a drive for a particular
file; diff, which compares two files and
prints their differences; and grep, which
searches files for character strings. $149.
Polytron Corporation , 1815 N.W.
169th Place, Suite 2110, Beaverton,
OR 97006; 800/547-4000; in
Oregon, 503/645-1150
CIRCLE 334 ON READER SERVICE CARD
Phoenix Technologies, Ltd. has de¬
veloped a software coprocessor technol¬
ogy that enables manufacturers of com¬
puters based on non-IBM-compatible
processors, such as the Motorola 68000,
to offer a DOS-based, PC-compatible
operating mode entirely through soft¬
ware emulation. The Soft Co-Proces-
sor will provide a fully PC/XT-compat-
ible environment for workstation man¬
ufacturers with incompatible operating
systems (or processors), and requires
no additional hardware. Soft Co-Proces¬
sor supports all existing I/O controllers.
As with hardware coprocessors, Soft Co-
Processor traps and responds to all I/O
functions with emulation software. How¬
ever, the soft version includes additional
emulation software that remaps the Intel
processor instruction set to the host sys¬
tem’s native processor. PC video is sup¬
ported through the standard screen or
window manager. The DOS file system
is fully integrated with the native file
system, thus allowing users to read and
write files created from either environ¬
ment. Licensing to OEMs is available.
Phoenix Technologies, Ltd., 320
Norwood Park South, Norwood,
MA 02062; 617/769-7020
CIRCLE 328 ON READER SERVICE CARD
True BASIC, Inc. has released version
2.0 of True BASIC, in which the full
range of graphics display cards, includ¬
ing Hercules, IBM EGA, and IBM CGA, is
supported; GKI (graphic kernel system)
syntax has been expanded; and mouse
support added. True BASIC 2.0 features
separately compilable modules that may
be stored as libraries. Because modules
have their own initialization sections,
the user can set up global variables, sep-
Version 2.0 from True BASIC, Inc.
arate graphics output from the rest of
the program, or turn on instrumenta¬
tion. True BASIC 2.0 is faster than ear¬
lier versions and offers even better sup¬
port for 8087/80287 numeric coproces¬
sors. Maximum string length has been
increased to 64KB per string, and still
supports 640KB of memory. Added de¬
bugging tools aid in tracing program ex¬
ecution or printing a cross-referenced
listing. $149.90; upgrade, $30.00.
True BASIC, Inc., 39 S. Main Street,
Hanover, NH 03755; 603/643-3882
CIRCLE 332 ON READER SERVICE CARD
Version 1.03 of the DADiSP Work¬
sheet, a technical spreadsheet for digi¬
tal signal analysis, is available from DSP
Systems. DADiSP 1.03 features the DSP
pipeline, which allows users to run ex¬
ternal programs within the DADiSP en¬
vironment. Using DSP pipeline, the user
can, with a single command, export data
from any DADiSP window to an external
set of analysis or filtering algorithms
and bring the modified data back into
DADiSP. He also can run third-party
IEEE 488, RS-232, and plotter drivers
from DADiSP. $795.
DSP Systems, One Kendall Square,
Cambridge, MA 02139; 617/577-1133
CIRCLE 324 ON READER SERVICE CARD
A serial communications product that
runs concurrently with DOS and other
applications on the PC family is being
offered by Sundance Software, Inc.
handshake allows users to communi¬
cate over serial lines without leaving an
application or waiting for the communi¬
cations to finish before continuing.
handshake also allows several PCs to be
connected to share resources without
the need for a file server. Two PC hand¬
shake links, $229; handshake for each
additional PC, $99.
Sundance Software, Inc., P.O. Box 434 ,
Redmond, WA 98073; 206/885-0759
CIRCLE 327 ON READER SERVICE CARD
MicroSim Corporation has released
version 3.0 of its PSpice analog elec¬
trical-circuit simulator. PSpice has been
converted from FORTRAN into C in or¬
der to make use of the advantages of C:
A reduction in the program code size
(and more compact data structures) has
doubled the maximum circuit size from
120 to 240 metal oxide semiconductors
(MOS) transistors on the PC. Execution
times have been improved. Changes in
input processing allow circuit nodes to
be given names or numbers, thus facili¬
tating access nodes inside subcircuits.
PSpice 3.0 is compatible with (Univer-
36
PC TECH JOURNAL
I\m imm
JRRM-RT TRLL TREE SYSTEMS
COPYRIGHT © 1S6S Tflu THE!
Spflflw
,8MB
$3999
A Technological Innovator.
Always a Step Ahead!
For true industry leader¬
ship, look no further than
Tall Tree Systems.
We have a history of
being first.
We were the first to
introduce bankswitching.
The first with two megabyte
memory boards. The first
with I/O modularity in a
single slot. The first with
8 MHz speed capabilities.
The only maker of single
CIRCLE NO. 197 ON READER SERVICE CARD
©1986 by Tall Tree Systems. All rights reserved. IBM, RT are registered trademarks of International Business Machines Corp.
Canon and Ricoh are registered trademarks of Canon Corp. and Ricoh Corp., respectively.
command EMS boards.
The first with a laser printer
solution — J LASER — that
allows you to do full-page
graphics and multiple type
fonts on any Canon® or
Ricoh® laser engine.
Now, we're first again
with memory expansion for
the IBM®RT.
Innovation is our tradition.
Our trademark is supe¬
rior technology at the lowest
possible price.
Ipw. TREE SYSTEMS
1120 San Antonio Road • Palo Alto, CA 94303 • (415) 964-1980
PrTERM, a multitenninal emulator from Crystal Point, Inc.
TECH RELEASES
Lotus Express for MC! Mail from Lotus and MC!
sity of California) Berkeley SPICE2G.6
and includes extensions, such as GaAs
MESFET modeling. $950.
MicroSim Corporation, 23175 La
Cadena Drive, Laguna Hills, CA 92653;
800/826-8603, in California,
714/770-3022
CIRCLE 326 ON READER SERVICE CARD
Data Access Corporation has an¬
nounced FlexTools, a comprehensive
toolkit for developers who use Dataplex,
the company’s relational database devel¬
opment system. Included with FlexTools
are flexhelp, a pop-up help utility; flex-
change, a utility that allows the pro¬
grammer automatically to change, add,
or remove field or index information
in DataFlex files; strip, a utility that re¬
moves all comments and blank lines
and left-justifies all lines of source code,
which renders the code difficult to read,
yet compilable; relocate, a file-manage¬
ment utility; FTXREF, a cross-reference
utility; and ftref 2 , a source code file
search utility. The revamped menu envi¬
ronment lets the user define as many as
24 selections per menu; in addition, the
system detects when a menu has more
than 12 selections and automatically
splits the screen. $195.
Data Access Corporation, 8525 S.W.
129th Terrace, Miami, FL 33156;
305/238-0012
CIRCLE 329 ON READER SERVICE CARD
Lotus Development Corporation
and MCI Communications Corpora¬
tion have announced their plans to
jointly market Lotus Express for MCI
Mail, a communications product that
makes possible quick and reliable ex¬
change of any binary 7 file. The integrated
program gives the user a Lotus interface
to the MCI Mail network and its full
range of electronic and off-network de¬
livery options, along with on-line help
and mail-management facilities. The
program lets users compose, read, send,
file, archive, and print electronic mail
directly from their PCs. Lotus Express
can run in the background or as a stand¬
alone program. $100.
Lotus Development Corporation,
161 First Street, Cambridge,
MA 02142; 617/577-1100
CIRCLE 341 ON READER SERVICE G\RD
MCI Communications Corporation,
2000 M Street NW, Suite 300, Washing¬
ton, DC 20036; 800/624-2255; in Wash¬
ington, 202/833-8484
CIRCLE 321 ON READER SERVICE CARD
A multiline bulletin board system called
DXL has been introduced by Inner
Loop Software. This product supports
as many as nine telephone lines in addi¬
tion to a user at the keyboard. The sys¬
tem operator can customize the system
to the application without programming.
DXL provides private and public elec¬
tronic mail, user-to-user mode, and file
uploading and downloading using ASCII
and XMODEM protocols. System opera¬
tors can assign up to ten account secu¬
rity levels. Two-line version, $200.
Inner Loop Software, 5456 McConnell
Avenue, Suite 120, Los Angeles, CA
90066; 213/822-2800
CIRCLE 322 ON READER SERVICE CARD
^ c term 3.1, a multiterminal emulator,
has been announced by Crystal Point,
Inc. /^term is designed to communicate
with a wide spectrum of computers and
information services; it currently emu¬
lates 15 asynchronous terminals includ¬
ing the IBM 3101. z^term can be custom
programmed to create unique menu en¬
vironments; its programming language
has more than 80 communications-re-
lated commands that allow this product
to emulate not only a terminal, but an
operator as well, for repetitive data
entry. It can be programmed for unat¬
tended data transfers with full error-
recovery capability and conditional test¬
ing based on response, z^term also per¬
mits unattended remote access to files
on the PC, and remote users of z^term
and other communications packages can
upload and download files from an un¬
attended PC. /^term is IBM TopView and
Microsoft Windows aware; it can be run
as a background task permitting remote
access, z> c term also is featured on the
Ungermann-Bass Net/One Async PC
network (see Hardware). $250.
Crystal Point, Inc., 12221 N.E. 140th
Kirkland, WA 98034; 206/821-1909
CIRCLE 336 ON READER SERVICE CARD
Dasoft Design Systems, Inc. has an¬
nounced a CAD package for engineers.
Project: PCB provides complete sche¬
matic capture, board layout, and auto¬
routing capabilities. Graphics options in¬
clude Hercules monochrome, IBM CGA,
and IBM EGA with monochrome or
color monitor. A system mouse is re¬
quired, and a wide variety of plotters is
supported. Special features include
user-definable schematic and silk-screen
symbols; user-definable footprints to
hoo-inch accuracy; block move, copy,
and delete functions; screen display of
unrouted traces on the board; a tag-and-
drag function in interactive routing
mode; four-layer boards (two signal
layers, plus internal planes); single-net
or full-board autorouting; routines for
producing net lists, parts lists, and hole
lists; plot routines for camera-ready art¬
work; and optional predefined libraries
of parts and symbols. $950.
Dasoft Design Systems, Inc., P.O. Box
8088, Berkeley’, CA 94707-8088;
415/486-0856
CIRCLE 323 ON READER SERVICE CARD
Command Plus version 1.1 has been
announced by ESP Software Systems,
Inc. Created as a programming environ¬
ment for DOS, Command Plus features
an aliasing command, which allows the
user to create fast, memory-resident
command macros; a history command,
which lets the user edit and execute
commands that were run as many as 48
command lines before; disk-manage-
38
PC TECH JOURNAL
A Challenge to Microsoft® C...
We challenge Microsoft C (Ver 4.0) to a C compiler duel to the finish, measuring compile, link,
and execution times. If they win, we will stop advertising for two months.
by Roy Sherrill
If Microsoft C (Ver 4.0) can beat
Optimum-C then we will stop advertis¬
ing in all magazines for two full months
and, win or lose, we will publish the
results in its entirety. Even the Micro¬
soft ads say “The Fastest C youVe ever
seen/’ so let the challenge begin.
Walter says Optimum-C is better
It all started when Walter Bright, the
developer of Optimum-C, was explaining his
new global optimizing C compiler and how
it’s code would be faster than Microsoft C
(Ver. 4.0). Walter and I were frustrated
because here we had a C compiler that would
beat Microsoft C on 7 out of 10 benchmarks
and also compile and link faster; yet our mar¬
keting consultant, Mark Astengo, told us that
Microsoft C had a lock on the C compiler
market and by 1990 they would probably have
an 80% market share. Then Mark said, “Roy,
if your C compiler is as fast as you say it is,
why not challenge Microsoft C to a duel? If
Microsoft wins, Datalight should stop adver¬
tising for two months and print the results of
the test, win or lose.” Well, I’ve always been
one for a challenge. So here it is...
We only ask the following...
The benchmark suite will consist of the set
of programs that Microsoft supplied to
Computer Language for their February 1987 C
compiler review issue. Microsoft will make
available the programs to Datalight at least
two weeks prior to the benchmarking. The
benchmarking will be between Microsoft C
4.0 and Optimum-C. It will occur at a mutu¬
ally agreed upon time and place. Interested
individuals will be allowed to attend. The
benchmarks will be compiled and run on a
standard IBM PC-AT.
There will be two separate tests for each
program: compile and link speed, and execu¬
tion speed. For each test, a representative
from each company will set up the compiler
so that it performs at its best.
The benchmarks will be adjusted so that
they take sufficiently long to run, that the
tolerance involved in timing them is insig¬
nificant. The winner is determined by the
compiler with the faster execution times for
the majority ofthe benchmarks. We’d like an
answer from Microsoft no later than April 1,
1987.
So what’s a global optimizer?
A global optimizer looks at an entire
function at once, analyzing and optimizing
the whole function. A technique called data
flow analysis is used by Optimum-C to gather
information about each function. This en¬
ables your compute-bound programs to exe¬
cute as much as 30% faster after global
optimization. But, there is one catch...because
the global optimizer ruthlessly searches for
ways to speed-up execution speed and mini¬
mize memory usage, it has relatively slow
compile times. No need to worry, though,
because you can merely turn the global opti¬
mizer off. In fact, you can select all, none, or
partial of the following optimizations: con¬
stant propagation, copy propagation, dead
assignment elimination, dead variable elimi¬
nation, dead code elimination, do register
optimizations, global common subexpression
elimination, loop invariant removal, loop
induction variables, optimize for space,
optimize for time, very busy expressions.
Choose from five memory models
Speed your programs by selecting the mem¬
ory model that best suits your application.
Memory Models
Model Code Data
Compact
64k total code & data
Small
64k
64k
Program
1M
64k
Data
64k
1M
Large
1M
1M
Compiling, one step...
Now with the one step DLC program you
can create .OBJ, .EXE and .COM files. Also,
DLC can handle multiple files and run MASM
on your assembly files.
Try Optimum-C risk free
Try Optimum-C for 30 days and if you are
not 100% satisfied return it for a full refund.
Also, for a limited time we are including a
*free C tutorial which is a combination
workbook and floppy disk to help lead you
through the C language with tutorials,
quizzes, and program exercises.
O.K. Microsoft, it’s up to you. We’ve put
two months of advertising on the line that says
you can’t beat Optimum-C to a real test. Your
answer, please?
PRICES
Developer’s Kit still only $99
Optimum-C $139
(includes library source code)
Add $5 for shipping in US/$15 outside US
COD (add $2.50)
Not Copy Protected
■
ORDER TOLL-FREE TODAY!
1-800-221-6630
Microsoft and MS-DOS are registered trademarks
of the Microsoft Corporation.
Magazine Reviewers Shocked by
DATALIGHT’s Performance...
“Reviewing this compiler was quite a surprise
for us. For such a low price, we were expecting
a “lightweight” compiler. What we got was
a package that is as good as or better than
most of the “heavyweights.” Datalight C
implements a complete C language. It also
compiles quickly, doesn’t take up much disk
space, and looks impressive in the
benchmarks.”
DR. DOBBS , August 1986
“This is a sharp compiler!... what is impres¬
sive is that Datalight not only stole the com¬
pile time show completely, but had the fastest
Fibonacci executable time and had excellent
object file sizes to boot!”
COMPUTER LANGUAGE , February 1986
Optimum-C Version 3.0
♦ Full UNIX System 5 C language plus
ANSI extensions
♦ Fast/tight code via powerful optimizations
including common sub-expression
elimination
♦ DLC one-step compile/link program
♦ Multiple memory model support
♦ UNIX compatible library with PC functions
♦ Compatible with DOS linker and assembler
♦ Third-party library support
♦ Automatic generation of .COM files
♦ Supports DOS pathnames, wild cards,
and Input/Output redirection
♦ Compatible with Lattice C version 2.x
♦ Interrupt handling in C
♦ Debugger support
♦ ROMable code support/start-up source
MS-DOS® Support Features
♦ Mouse support
♦ Sound support
♦ Fast screen I/O
♦ Interrupt handler
MAKE Maintenance Utility
♦ Macro definition support
♦ MS-DOS internal commands
♦ Inference rule support
♦ TOUCH date manager
Tools in Source Code
♦ cat—UNIX style “type”
♦ diff—Text file differences
♦ fgrep—fast text search
♦ pr—Page printer
♦ pwd—Print working directory
♦ wc—Word count
Datalight
Box 82441
Kenmore, Washington 98028
(206) 367-1803
* Limited offer available exclusively to readers who
purchase directly from Datalight.
CIRCLE NO. 107 ON READER SERVICE CARD
Command Plus programming environment from PSP Softirare Systems
Screen from Personal Consultant Plus (PC Plus) from Texas Instruments
ment utilities, which contain options to
process subdirectories recursively, sort
files, and specify multiple source files;
BROWSE, a full-screen hie viewer with
regular expression searching and IBM
EGA 43-line support; command line
editing with user-definable editing keys;
and the ability to create multiple com¬
mands and arguments on a line. $79-95.
ESP Software Systems, Inc., 11965
Venice Blvd., Suite 309, Los Angeles, CA
90066; 800/992-4377; in California,
213/390-7408
CIRCLE 325 ON READER SERVICE CARD
A BASIC programmer’s package has
been introduced by MicroHelp, Inc.
Sta-Res makes compiled BASIC pro¬
grams memory-resident, such that they
can be invoked by pressing a selectable
hot key. For machines that use DOS 3-0
or later plus an expanded/extended
memory board, adding the EMS/RAM
disk module ensures that each memory-
resident program takes only 7KB of
DOS memory, and the balance of the
program is swapped in and out of mem¬
ory as needed. Included in the program
is a SHELL facility that allows the user to
execute any program, even other BASIC
programs and the BASIC interpreter.
Sta-Res is not copy protected, and no
royalties are imposed when Sta-Res-
assisted programs are distributed as
a part of executable programs. $95;
EMS/RAM disk module, $50.
MicroHelp, Inc., 2220 Carlyle Drive,
Marietta, GA 30062; 404/973-9272
CIRCLE 339 ON READER SERVICE CARD
Big Bang Software, Inc. has released
an MC68000/68010 Simulator/De¬
bugger for the PC. The package enables
the user to test and debug 68000/10
software on the PC; hexadecimal files of
Motorola S-Records can be disassem¬
bled and displayed. Instructions can be
executed in fast or single-step mode,
and the results of each executed instruc¬
tion on registers, flags, and 68000/10
memory are immediately available for
display. During single-stepping, the dis¬
play shows the last instruction executed,
the current contents of all registers, and
the instruction following the last exe¬
cuted. All 68000/10 instructions, address¬
ing modes, and condition codes are
fully supported. Load, dump, and break¬
point facilities are included. $285.
Big Bang Software, Inc., P.O. Box 879,
Panama City, FL 32402; 904/784-3393
CIRCLE 333 ON READER SERVICE CARD
The Personal Consultant Series, a
family of expert system development
tools is being offered by Texas Instru¬
ments (TI). Personal Consultant
Easy is designed for users just begin¬
ning in expert system development, and
it features high functionality for rapid
prototyping of small- to medium-sized
expert system applications. Personal
Consultant Plus (PC Plus), a more
powerful member, is designed to take
Screen from Tl's Personal Consultant Pay'
advantage of PC/AT-class machines. PC
Plus provides extended knowledge-
representation features, increased rule
capacity, and access to LISP, thus pro¬
viding sophisticated developers the flex¬
ibility to customize their applications.
Knowledge bases created with Personal
Consultant Easy are upwardly compat¬
ible with PC Plus. Applications devel¬
oped under either product can be deliv¬
ered on microcomputers with the addi¬
tion of an optional runtime diskette.
Personal Consultant Easy, $495; PC Plus,
$2,950; demo diskette, $25; runtime
diskettes, $95 each or $995 for 20, PC
Scheme (TI’s LISP compiler), $95.
Texas Instruments, Data Systems Group,
A1 Software Marketing Department, M/S
2244, P.O. Box 2909, Austin, TX 78769-
2909; 800/527-3500
CIRCLE 331 ON READER SERVICE CARD
Unicom Systems Company has an¬
nounced that MicroCICS for the PC-370
now supports CICS release 1.7. Micro¬
CICS, provides a full CICS development
environment, allows programmers to
enter, compile, test, debug, and execute
CICS applications without accessing the
mainframe until the completed code is
ready for uploading. MicroCICS support
for CICS 1.7 includes modifications to
the Command Language Translator,
Command Routines, and debugging
tools that provide integrated support for
release 1.7 features. MicroCICS also can
be used to write programs compatible
with CICS 1.5 or 1.6.
MicroCICS will interpret and exe¬
cute applications according to the fea¬
tures supported by the CICS release that
the programmer selects. It allows devel¬
opment of command-level CICS COBOL
and assembly language source programs
outside the mainframe environment.
MicroCICS includes on-line screen gen¬
eration and automatic creation of basic
mapping support (BMS) maps, creation
and maintenance of test data hies, pro¬
gram execution and testing using a pow¬
erful symbolic debugger, and host com¬
munications for program uploading and
downloading. PC-370, $4,495.
Unicom Systems Company, 3807 Wil-
shire Blvd., Los Angeles, CA 90010;
213/380-6974
CIRCLE 340 ON READER SERVICE CARD I mmiinii
The material that appears in Tech Releases is
based on vendor-supplied information. These
products have not been reviewed by the PC
Tech Journal editorial staff.
40
PC TECH JOURNAL
Unbiased Advice.
Our friendly, non-commissioned salespeople are always prepared to
assist you. We also have experienced technical consultants who can
answer questions, help you compare products and send you detailed
product information tailored to your needs. Since we're not affiliated
with any software publisher or manufacturer, we'll give you an unbiased
look at the products we carry.
High Quality.
We stock hundreds of high quality software development tools
specifically for IBM personal computers and compatibles. And as new
products become available, we'll sell only those that meet our high
standards for quality and value.
Manufacturer Support.
The products we sell are the latest versions and come with the same
technical support as if buying directly from the manufacturer.
Return Guarantees.
Our goal is customer satisfaction and that's why we offer a 30-day
documentation evaluation period or a 30-day return guarantee on most
of our products. Please call for specific details.
Immediate Shipment.
Most products are in stock and are ready for shipment from our large
inventory.
Discounts.
You'll save money on all of your software purchases from Programmer'
Connection. Our ads show both the discount and retail prices for eacl
product so you'll always know exactly how much you'll save.
FREE Shipping
Shipping is FREE if you have your order shipped via standard UPS
anywhere in the USA. We can also express your order to you with no
special fees and we'll only charge you the shipping carrier's standard
rate. Many other companies profit from overcharges plus special fees
for express shipments.
Credit Cards.
We'll charge your credit card at the time we ship your order. Other
companies may charge your credit card at the time they take your order
so they can use your money interest-free while you wait for your
shipment.
No Sales Tax.
Customers outside of Ohio are not charged state sales tax. Ohio res¬
idents are charged 6 percent.
No Hidden Charges.
Quite simply, the prices you see on the next two pages are all you pay.
We don't charge extra for standard UPS shipping, credit cards, COD
orders, purchase orders or special handling.
Turn the page for our latest advertised price list.
apl language
APL*PLUS/PC bySTSC . 595 429
APL*PLUS/PC Spreadsheet Mgr by STSC. . . 195 139
APL*PLUS/PC Tools Vol 1 by STSC . 295 199
APL*PLUS/PC Tools Vol 2 by STSC . 85 59
Financial/Statistical Library by STSC . 275 195
Pocket APL bySTSC . 95 69
STATGRAPHICS bySTSC . 795 579
artificial intelligence
Ist-CLASS by Programs in Motion . 495 399
APT from Solution Systems . 65 CALL
Arity Combination Package. 1225 1119
Expert System Development Pkg. 295 259
File Interchange Toolkit. 50 45
PROLOG Compiler & Interpreter. 795 699
Screen Design Toolkit. 50 45
SQL Development Package. 295 259
Arity PROLOG Interpreter. 350 309
Arity Standard Prolog . 95 79
Autointelligence byIntelligenceWare . 990 CALL
ExpertEDGE Advanced by Human Edge . 2500 CALL
ExpertEDGE Professional by Human Edge .... 5000 CALL
Experteach II by IntelligenceWare . 475 359
EX SYS Development Software by EXSYS . 395 319
EXSYS Runtime System . New 600 479
G C LIS P Golden Common LISP by Gold Hill . 495 CALL
GCLISP 286 Developer by Gold Hill . 1190 CALL
Insight 1 by Level Five Research . 95 75
Insight 2+ by Level Five Research . 485 379
Intelligence/Compiler IntelligenceWare . 990 749
Logic-LinegSeries 1 by Thunderstone . 90 85
Logic-Line^Series 2 by Thunderstone . 125 115
Logic-Line Series 3 by Thunderstone . 150 139
LPA microPROLOG All Varieties . CALL CALL
Microsoft LISP Common LISP . 250 163
MPROLOG Language Primer LOGICWARE New 50 45
MPROLOG P500 byLOGICWARE . New 495 395
MPROLOG P550 by LOGICWARE . New 220 175
PC Scheme by Texas Instruments . 95 84
Personal Consultant Easy byTI . 495 435
Personal Consultant Plus byTI . 2950 2589
Personal Consultant Runtime. 95 85
QNIAL byNIAL Systems . 375 349
TransLISP from Solution Systems . 95 CALL
TransLISP PLUS from Solution Systems . . . New 195 CALL
Turbo PROLOG by Borland Inti . . . .New Version 100 65
assembly language
386 ASM/LINK Cross Asm by Phar Lap . 495 389
8088 Assembler w/Z-80 Trans by 2500 AD ... . 100 89
ASM LIB Function Library by BC Assoc . 149 129
asmTREE B-Tree Dev System by BC Assoc . 395 339
Cross Assemblers Various by 2500 AD . CALL CALL
Microsoft Macro Assembler. 150 95
Norton Utilities by Peter Norton . 100 59
Turbo EDITASM by Speedware . 99 84
Uniware Cross Assemblers Various by SDS . . . 295 249
Visible Computer: 8088 Software Masters .... 80 65
basic language
BetterBASIC by Summit Software . . . . Clearance 200 119
EXIM Services Toolkit byEXIM . CALL CALL
Finally by Komputerwerks . 99 85
Inside Track from Micro Help . 65 51
MACH 2 by Micro Help . 75 59
Microsoft QuickBASIC. 99 65
87 QB Pak byHauppauge . New 69 59
Peeks 'n Pokes from MicroHelp .. 45 37
Professional BASIC by Morgan . 99 75
8087 Math Support. 50 42
Stay-Res by MicroHelp . 95 74
True Basic. New Version 150 99
True Basic w/Run-time . 245 179
BASICA Converter. 50 45
Run-time Module. 150 99
Various Other Utilities . 50 45
Turbo BASIC by Borland Inti . New 100 69
blaise products
ASYNCH MANAGER Specify C or Pascal . 175 124
C TOOLS PLUS. 175 124
EXEC Program Chainer . 95 75
LIGHT TOOLS forDatalight C . New 100 89
PASCAL TOOLS. 125 99
PASCAL TOOLS 2 . 100 79
PASCAL TOOLS & PASCAL TOOLS 2. 175 124
RUNOFF Text Formatter . 50 45
TURBO ASYNCH PLUS. 100 79
TURBO POWER TOOLS PLUS . 100 79
VIEW MANAGER Specify C or Pascal . 275 189
borland products
EUREKA Equation Solver . New 100 69
REFLEX & REFLEX Workshop. 200 129
REFLEX Data Base System . 150 89
REFLEX Workshop. 70 45
Turbo BASIC. New 100 69
Turbo DATABASE TOOLBOX . 70 47
Turbo EDITOR TOOLBOX. 70 47
Turbo GAMEWORKS TOOLBOX. 70 47
Turbo GRAPHIX TOOLBOX. 70 47
Turbo LIGHTNING . 100 64
Turbo Numerical Methods Library. New 100 69
Turbo PASCAL and TUTOR. New 125 85
Turbo PASCAL with 8087 and BCD . 100 64
Turbo TUTOR. 40 28
Turbo Prolog Compiler. New Version 100 64
Turbo Prolog Toolbox. New 100 64
Word Wizard. 70 47
Word Wizard and Turbo Lightning. 150 94
C++
C ++ by Guidelines w/kernel l.f . 195 179
PforCe++ Library for C++ by Phoenix . New 395 229
c compilers
68000/10/20 Cross Compiler by SDS . 595 CALL
C86PLUS by Computer Innovations . New 497 CALL
Datalight C Compiler Small Model . 60 49
Datalight Developer Kit. 99 79
Datalight Optimum-C. New 139 119
DeSmet C w/Debugger . 159 138
DeSmet C w/Debugger & Large Case . 209 184
Eco-C Development System by Ecosoft . 125 83
Lattice C Compiler from Lattice . 500 275
Mark Williams Let's C Combo Pack ... New 125 99
Let's C Compiler . 75 57
csd Source Level Debugger . 75 57
Mark Williams MWC-86 . 495 289
Microsoft C with CodeView . 450 275
Wizard C Combo by Wizard Systems . 750 529
Wizard C Compiler. 450 299
ROM Development Pkg. 350 259
c interpreters
C-terp by Gimpel. Specify compiler . 300 235
C Trainer with Book by Catalytix . 122 87
Instant C by Rational Systems . 500 379
Introducing C by Computer Innovations . 125 CALL
Run/C from Lifeboat . 150 88
Run/C Professional from Lifeboat . 250 159
c utilities
C Essentials by Essential Software . 100 75
C-ISAM by Informix . 225 195
C to dBase by Computer Innovations . 150 CALL
c-tree & r-tree Combo byFairCom . 650 529
c-tree ISAM File Manager . 395 329
r-tree Report Generator . 295 249
C Utility Library by Essential . 185 135
C Windows bySyscom . 100 85
C Wings bySyscom . 50 43
Cl ROMPac by Computer Innovations . 195 CALL
dbQU ERY AH Varieties by Raima . CALL CALL
dbVISTA Single-User DBMS by Raima . 195 155
with Source Code . 495 425
dbVISTA Multi-User DBMS by Raima . 495 425
with Source Code . 990 845
dBx dBase/C Translator by Desktop At . 350 314
with Library Source Code . 550 493
Entelekon Combo Package. 200 169
C Function Library. 130 109
C Windows . 130 109
Superfonts for C. 50 43
Essential Comm Library w/Debugger . 250 195
Breakout Debugger Any language . 125 99
Essential Comm Library. 185 135
Essential Graphics by Essential Software . 250 195
Flash-up Windows by Software Bottling . 90 79
Graphic Mono v2.2 by Sci Endeavors . 280 209
Graphic Color v3.0 by SciEndeavors . 350 284
GRAFLIB by The Librarian . 175 CALL
Greenleaf Comm Library by Greenleaf . 185 127
Greenleaf Data Windows by Greenleaf . 225 157
with Source Code . 450 295
Greenleaf Functions by Greenleaf . 185 127
HALO by Media Cybernetics . 300 209
HALO Development Pkg for Microsoft . . . New 595 395
The HAMMER by OES Systems . 195 139
HELP/Control byMDS . 125 109
MetaWINDOWS No Royalties . 185 115
MetaFONTS. 80 58
MetaWINDOWS/Plus by Metagraphics . 235 189
MetaFONTS/Plus. 235 189
PANELS/ Roundhill Computer Systems . 295 215
PC Lint by Gimpel Software . 139 99
P LOTH I by The Librarian . 175 CALL
PLOTHP by The Librarian . 175 CALL
Scientific Subroutine Lib by Peerless . 175 134
screenplay byFlexus . 175 129
Vector87 by Vectorplex Data Systems . 150 135
Vitamin C by Creative Programming . 225 CALL
VC Screen Forms Designer . 100 82
Zview by Data Management Consultants . 245 189
cobol language
Micro Focus COBOL Workbench. 4000 CALL
Micro Focus Level II COBOL. 1500 CALL
COGRAPHICS . 250 CALL
COMATH. 200 CALL
FORMS-2 . 300 CALL
Level II Animator. 900 CALL
Level II SOURCEWRITER. 2000 CALL
Micro Focus Level II COBOL for Novell . 2000 CALL
Micro Focus Professional COBOL. 3000 CALL
Multi-user Runtime for PC Network . 500 CALL
Microsoft COBOL See Microsoft Section . CALL CALL
Realia COBOL. 995 785
Realia CICS. New 995 785
RM/COBOL by Ryan-McFarland . 950 639
RM/COBOL856/ Ryan-McFarland . 1250 895
screenplay by Flexus . 175 129
debuggers Si profilers
386 DEBUG Cross Debugger by Phar Lap . 195 129
Advanced Trace-86 by Morgan Computing .... 175 125
Cl Probe by Computer Innovations . 225 CALL
Codesifter Profiler by David Smith . 119 94
Codesmith-86 by Visual Age . 145 99
DSD86 by Soft Advances . 70 61
DSD87 by Soft Advances . 100 79
MiniProbe by Atron . New 395 CALL
Periscope I by The Periscope Company . 345 CALL
Periscope II w/NMI Breakout Switch . 175 CALL
Periscope ll-X Software only . 145 CALL
The PROFILER with Source Code by DWB . 125 89
The WATCHER Profiler by Stony Brook . 60 51
forth language
CFORTH Native Code Compiler by LMI . 300 229
Forth/83 Metacompiler Specify Target . 750 599
PC/Forth by Laboratory Microsystems . 150 109
PC/Forth+ by Laboratory Microsystems . 250 199
Advanced Color Graphics Support. 100 74
Enhanced Graphics Support. 200 148
Intel 8087 Support . 100 74
Interactive Symbolic Debugger. 100 74
Native Code Optimizer. 200 148
Software Floating Point. 100 74
UR/Forth and support utilities by LMI . CALL CALL
fortran language
50 MORE: FORTRAN by Peerless Engr . 125 95
ACS Time Series Alpha Computer Service . 495 399
Btrieve ISAM File Mgr by SoftCraft . 245 194
Essential Graphics by Essential Software . 250 195
For-Winds Alpha Computer Service . 90 69
Forlib-Plus Alpha Computer Service . 70 49
FORTLIB by Sutrasoft . 95 CALL
FORTRAN Addenda by Impulse Engr . 95 85
FORTRAN Addendum by Impulse Engr . 165 139
GRAFLIB by Sutrasoft . 175 CALL
HALO by Media Cybernetics . 300 209
I/O PRO byMEFEnvironmental . 149 129
Microcompatibles Combo Package. 240 219
Grafmatic . 135 119
Plotmatic. 135 119
Microsoft FORTRAN w/CodeView - New Version 450 CALL
No Limit by MEF Environmental . 129 115
PANEL Screen Designer by Roundhill . 295 215
PLOTHUy Sutrasoft . 175 CALL
PLOTHP by Sutrasoft . 175 CALL
RM/FORTRAN Ryan-McFarland . 595 CALL
Scientific Subroutine Lib by Peerless . 175 134
Statistician Alpha Computer Service . 295 245
Strings & Things Alpha Computer Service . 70 51
Vector87 by Vectorplex Data Systems . 150 135
lattice products
Lattice C Compiler from Lattice . 500 275
with Library Source Code . 900 495
C Cross Reference Generator. 50 37
with Source Code . 200 145
C-Food Smorgasbord Function Library . 150 95
with Source Code . 300 184
C-Sprite Source Level Debugger . 175 129
Curses Screen Manager . 125 89
with Source Code . 250 178
d B C dBase File Manager for C . 250 178
with Source Code . 500 356
LMK Make Facility . 195 139
RPG II Compiler No Royalties . 750 626
RPG II Combo with SEU & Sort/Merge . 1100 939
RPG II Screen Design Aid Utility. New 350 309
SecretDisk File Encryption Utility . 120 89
S i d e T a I k Resident Communications . 120 89
SSP/PC Scientific Library . New 350 269
Text Management Utilities. 120 89
TopView Toolbasket Function Library . 250 178
with Source Code . 500 356
logitech products
LOGIMOUSE C7 Specify Connector Type . 99 83
with PLUS Pkg . 119 98
with PLUS & PC Paintbrush . 169 134
with PLUS & CAD Software . 189 153
with PLUS & Reflex . 199 162
with PLUS 8, CAD & Paint . 219 179
with PLUS & CAD & Paint & Reflex . 299 245
LOGIMOUSE BUS with PLUS Pkg . New 139 115
with PLUS & PC Paintbrush . New 189 149
with PLUS & CAD Software . New 209 175
with PLUS & Reflex . New 219 179
with PLUS & CAD & Paint . New 239 195
with PLUS & CAD & Paint & Reflex . New 319 259
MODULA-2/86 Holiday Package. 199 159
MODULA-2/86 Compiler. 89 62
MODULA-2/86 with 8087 Support. 129 98
MODULA-2/86 with PLUS Pkg. 189 138
Library Sources. 99 88
Make Utility. 29 25
ROM Package . 199 172
Run Time Debugger. 69 56
Turbo to Modula Translator. 49 42
Utilities Package. 49 42
Window Package . 49 42
REPERTOIRE for MODULA-2/86 byPMI . 89 79
Object Code Only . New 19 15
microport products
System V/AT by Microport Systems . 440 395
Runtime System (Operating System) . 159 145
Software Development System. 169 155
Text Preparation System. 169 155
User Upgrade 3 to Unlimited Users . 169 155
microsoft products
Microsoft BASIC Interpreter for XENIX . 350 239
Microsoft C with CodeView . 450 275
Microsoft COBOL Compiler. 700 439
for XENIX . 995 635
Microsoft COBOL Tools with Debugger . 350 CALL
for XENIX . 450 289
Microsoft FORTRAN w/CodeView - New Version 450 CALL
for XENIX . 695 439
Microsoft Learning DOS. 50 36
Microsoft LISP Common USP . 250 163
Microsoft MACH 10 w/Mouse& Windows .... 549 385
Microsoft MACH 10 Board only . 399 285
Microsoft Macro Assembler. 150 95
Microsoft Mouse Bus Version . 175 114
Microsoft Mouse Serial Version . 195 124
Microsoft muMath Includes muSIMP . 300 184
Microsoft Pascal Compiler. 300 184
for XENIX . 695 439
Microsoft QuickBASIC. 99 65
Microsoft Sort. 195 129
Microsoft Windows. 99 65
Microsoft Windows Development Kit. 500 309
other languages
CCS MUMPS Single-User by MGIobal . 60 51
CCS MUMPS Single-User/Mu/ti-Tasking. . . New 150 129
CCS MUMPS Multi-User . 450 369
Janus/AD A C Pack by B&R Software . 95 89
Janus/ADA D Pack by R&R Software . 900 769
Personal REXX by Mansfield Software . 125 99
Smalltalk/V byDigitalk . 99 84
EGA Color Option. New 49 45
Goodies Diskette. New 49 45
Smalltalk/Comm. 49 45
SN0B0L4+ byCatspaw . 95 80
other products
Compact Source Print byAldebaran .... New CALL CALL
Dan Bricklin's Demo Pgm Software Garden ... 75 59
FANSI-CONSOLE by Mersey Micro . 75 65
FASTBACK by 5th Generation Systems . 179 135
Informix for DOS by Informix . 795 639
lnformix4GL for DOS by Informix . 995 789
InformixSQL for DOS by Informix . 795 639
Instant Replay by Nostradamus . 90 79
Interactive EASYFLOW byHaventree . 150 129
MKS Toolkit with viby MKS . 139 119
Norton Commander by Peter Norton . 75 55
On-line Help from Opt-Tech Data Proc . 149 109
OPT-Tech Sort by Opt-Tech Data Proc . 149 115
PrintQ by Software Directions . 89 84
Quilt Computing Combo Package. 199 159
QMake Program Rebuild Utility . 99 84
S R M S Software Revision Mgmt Sys . 125 109
SoftScreen/HELP by Dialectic Systems . 195 149
Source Print byAldebaran Labs . CALL CALL
Taskview by Sunny Hill Software . 80 56
TLIB by Burton Systems Software . 100 89
Tree Diagrammer by Aldebaran Labs . CALL CALL
VTEK Term Emulator by Sci Endeavors . 150 129
phoenix products
Pasm86 Macro Assembler Version 2.0 . 195 115
Pdisk Hard Disk & Backup Utility . 195 125
Pfantasy Pac Phoenix Combo . 1295 849
Pfinish Performance Analyzer . 395 229
Pfix-86 Plus Symbolic Debugger . 395 229
PforCe Comprehensive C Library . 395 229
Plink-86 Plus Overlay Linker . 495 319
Pmaker Make Utility . 125 78
Pmate Macro Text Editor . 195 115
Pre-C Lint Utility . 295 155
Ptel Binary File Transfer Program . 195 115
polytron products
PolyBoost The Software Accelerator .
Polytron C Beautifier.
Polytron C Library I.
Polytron PowerCom Communications .
PolyLibrarian Library Manager .
PolyLibrarian II Library Manager .
PolyMake UNIX-like Make Facility .
PolyShell . New
PolyWindows Products All Varieties .
PolyXREF Complete Cross Ref Utility .
PolyXREF One language only .
PVCS Version Control System .
softcraft products
Btrieve ISAM Mgr with No Royalties .
Xtrieve Query Utility .
Report Option.
Btrieve/N for Networks ..
Xtrieve/N.
Report Option/N.
text editors
Brief from Solution Systems .
Epsilon Emacs-like editor by Lugaru .
KEDIT by Mansfield Software .
Micro/SPF by Phaser Systems . New
PC/VI by Custom Software Systems .
SPF/PC by Command Technology Corp .
Vedit by CompuView .
Vedit Plus by CompuView .
turbo pascal utilities
ALICE Interpreter by Software Channels .
Flash-up Windows by Software Bottling .
HELP/Control byMDS .
screenplay all varieties by Plexus .
Screen Sculptor by Software Bottling .
Speed Screen by Software Bottling . New
System Builder by Royal American .
IMPEX Query Utility . New
Report Builder.
TDebugPLUS by TurboPower Software .
Turbo EXTENDER by TurboPower Software ....
Turbo Professional by Sunny Hill .
TurboHALO from IMSI .
TurboPower Utilities by TurboPower .
Turbo Ref by Gracon Services ...
TURBOsmith Debugger by Visual Age .
TurboWINDOW byMetaGraphics .
wendin products
Operating System Toolbox.
PC N X Operating system .
PCVMS Similar to VAX/VMS .
XTC Text editor with Pascal source .
xenix system v
See also Microport System V/AT section.
XENIX System V Complete by SCO .
XENIX Development System.
XENIX Operating Sys Specify XT/AT .
XENIX Text Processing Package.
xenix products
Btrieve ISAM File Mgr by SoftCraft . ..
C-ISAM by Informix .
C-terp by Girnpel, Specify compiler .
c-tree ISAM Mgr by FairCom .
dbVISTA All Varieties by Raima .
d Bx with Library Source by Desktop Al .
DOSIX User Version by Data Basics .
DOSIX Console Version by Data Basics .
Informix by Informix .
lnformix4GL by Informix .
InformixSQL by Informix .
Lyrix by Informix .
Micro Focus Level II Compact COBOL.
Forms-2 .
Level II ANIMATOR.
Microsoft See Microsoft Section .
Networks for XENIX by SCO .
PANEL Screen Designer by Roundhill .
REAL-TOOLS Binary Version by PCT .
Library Source Version . ... i .
Complete Source Version .
RM/COBOL by Ryan-McFarland .
RM/FORTRAN by Ryan-McFarland .
SCO Professional Lotus clone by SCO .
LOWEST PRICES
80
69
49
45
99
78
179
139
99
78
149
115
99
78
149
119
CALL
CALL
219
169
129
99
395
309
245
194
245
194
145
114
595
464
595
464
345
274
195
CALL
195
154
125
99
175
139
149
119
195
139
150
107
185
139
95
66
90
79
125
99
100
79
125
91
125
91
100
CALL
75
CALL
75
CALL
60
49
85
64
70
48
129
98
95
78
50
45
58
45
80
58
99
79
99
79
99
79
99
79
1295
999
595
499
595
499
195
144
595
464
319
285
498
379
395
329
CALL
CALL
550
499
199
CALL
399
CALL
995
795
1500
1239
995
795
595
449
1000
795
400
319
600
479
CALL
CALL
595
495
625
535
149
89
399
289
499
369
1250
949
750
549
795
595
Since this ad is prepared in advance of publica¬
tion, some of our current prices may be lower
than what's advertised here. Call for latest
pricing.
FREE SHIPPING
Orders within the USA (including Alaska & Ha¬
waii) are shipped FREE via UPS. Express ship¬
ping is available at the shipping carrier's stand¬
ard rate with no rush fees or handling charges.
To avoid delays when ordering by mail, please
call first to determine the exact cost of express
shipping.
CREDIT CARDS
VISA and MasterCard are accepted at no extra
cost. Your card is charged when your order is
shipped. Mail orders please include credit card
expiration date and telephone number.
CODs AND POs
CODs and Purchase Orders are accepted at no
extra cost. POs with net 30-day terms are avail¬
able to qualified US accounts only.
FOREIGN ORDERS
Shipping charges for foreign and Canadian
orders are based on the shipping carrier's stand¬
ard rate. Since rates vary between carriers,
please call or write for the exact cost. Foreign
orders (except Canada), please include an addi¬
tional $10 for customs form preparation. All
payments must be made with US funds drawn on
a US bank. Please include your telephone
number when ordering by mail. Due to govern¬
ment regulations, we cannot ship to all
countries.
VOLUME ORDERS
Call for special pricing.
SOUND ADVICE
Our knowledgeable technical staff can assist in
comparing products, answer technical questions
and send you detailed product information tai¬
lored to your needs.
30-DAY GUARANTEE
Most of our products come with a 30-day docu¬
mentation evaluation period or 30-day return
guarantee. Please note that some manufactur¬
ers restrict us from offering guarantees on their
products. Call for more information.
CIRCLE NO. 175 ON READER SERVICE CARD
CALL TOLL-FREE
US 80G-336-1166
CANADA 800-225-1166
OHIO & ALASKA
(Call Collect) 216-877-3781
FOREIGN 216-877-3781
CUSTOMER SERVICE 216-877-1110
Hours: Weekdays 8:30 AM to 8:00 PM EST.
Ohio customers please add 6% state sales tax.
Prices are subject to change without notice.
136 SUNNYSIDE STREET
HARTVILLE, OHIO 44632
Call or write for our FREE comprehensive
price guide.
its simple.
With Intel’s Inboard™ 386/AT.
It fits right into your IBM® AT or
compatible, and gives you all the per¬
formance of a 386 system.
Without having to buy a 386 sys¬
tem. (Which, if you’ve priced one lately
is about three times as expensive)
Inboard 386 is based on the revo¬
lutionary 32-bit, 16 MHz 80386 chip
we invented. So it’ll work with all the
sonware you ve got sitting on your
desk. As well as any add-in boards you
may have hiding in your computer¬
like, just for instance, the Above™
Board. Which we also invented.
Inboard 386 lets you whiz through
recalcs with Lotus® 1-2-3.® Andit
makes your network server serve you
even faster. In fact, it’ll make any
program serve you faster.
And with 386 control software,
Inboard and Above are trademarks and Intel a registered trademark of Intel Corporation. IBM is a registered trademark of International Business Machines Corp. Lotus and
" M " v . n ...‘ ,v A ' '\. " - A
you can take advantage of exceptional
multitasking capabilities. Like put¬
ting together a presentation while
your computer is downloading data.
(A slightly more efficient way of
doing business)
Don’t forget our five-year
warranty Or toll-free technical
support line.
To find out more, check with i
your favorite computer dealer
or call us at (800) 538-3373.
And see why Inboard 386
beats the system.
1-2-3 are registered trademarks of Lotus Development Corp. © 1986 Intel Corporation
CIRCLE NO. 216 ON READER SERVICE CARD
C Programmers:
We support every product in this ad & 700 others.
Try any product here with a full 31-day money-back guarantee.
BRIEF Makes Editing C Programs a Breeze
No other editor comes close to making your life easier. BRIEF, The Program¬
mer’s Editor, is tailored to address the needs of C programmers —your
needs. Take a look at the BUILT-IN features below. They are just part of
the reason why 1000s of C programmers already rely on BRIEF.
AutoCompile - While in BRIEF you can compile with MS C, Lattice, or
several other compilers (we’ll even help you support any compiler through |
our 800-line tech support). You save over 20 seconds each compile; and
you can automate as with a CC.EXE or MAKE.
Autoindent - Save keystrokes and increase style consistency. Use the editor’s |
default indentations or modify them to your taste.
Template Editing - Get the full structure of a programming construct on¬
screen and move the cursor from one “fill-in-the-blanks” location to the
next.
Error to Error Tracking - Use “next error” to move to the next appropriate |
line. Display error messages in a separate window - even when you add
or delete code, BRIEF knows where to go.
MultiWindow Editing - Keep different parts of the same file in horizontal
or vertical windows. Put your header file in one, main function in another,
current function in a third. Any size, any number.
Macro Language - Completely readable and programmable, the macro
language will be second nature for an experienced C programmer. Feel
free to modify the macro source code included with BRIEF.
And remember, BRIEF is a full featured editor that can be used with any
language. User surveys indicate that even beginning programmers become
productive with BRIEF in less than 30 minutes. Call The Programmer’s
Shop and ask about UNDO (not undelete), Unlimited File Size, Tiled &
Pop-Up Windows . . ., or ask for a detailed product description that will
tell you why BRIEF can’t be beat. 800-821-2492 PCDOS $195
NEW Blaise Tools Are Better Than Ever
C Tools Plus
Free yourself for more creative programming; stop worrying about hard¬
ware dependence. Handle everything from co-resident software require¬
ments to multiple display pages and monitors with C Tools Plus. Filter
interrupts so that other resident programs still work. 200+ well-
documented functions control screen handling (direct to video adapter or
BIOS calls, EGA text mode support including 43 line and multiple display
pages — even handle multiple monitors), an unlimited number of pop-up,
stackable windows with word-wrap, interrupt service routines, DOS di¬
rectory and file handling, memory management and program control,
string functions, and more. Source, no royalties. Lattice 3.0, MS C.
. PCDOS $149
BLAISE COMPUTING INC.
Compiler-Compatible Interpreter, Editor, Debugger
Interactive-C™
A fully integrated development environment, Interactive-C combines a
K&R standard interpreter with a full-screen editor and source-level de¬
bugger. Interactive-C is 100% compatible with Lattice or Microsoft.
You can link in external libraries — your own or commercial: no source
code modifications are necessary!
The full screen editor gives you adjustable edit, command, and status
windows. Switch to second screen for output, or even display on two
separate monitors.
Why get only a limited debugger when you can get full source debugging
with an interactive interpreter? Unlimited breakpoints, variety of stepping
modes, interactive viewing and modification of variables, automatic
positioning of cursor at error. Even stop to edit, then continue without
re-executing from start . 8087/287 support.
Specify Lattice or Microsoft.
PCDOS $219
MacStyle Your C Programs Use Mac’s Friendly
Interface with C Extender
Invention Software has written a powerful library that lets novices and
professional developers alike access the Mac interface with over 85 flexible
functions to extend, access, and integrate with the ‘Toolbox.”
High and low level functions create windows, scroll bars, dialog boxes,
menus, provide mouse support, and perform graphics printing with single
function calls. NEW version 2.00 features ZOOM windows, marquis to
copy screen image, double-click detect, search and replace multi-page
printing, improved text-editing, save and recall MacPaint bit map, “bug
alert,” modeless dialog support, and generic I/O routines. Compact code,
partial.source tutorial provided, no royalties. Aztec, Megamax, Consulair,
Lightspeed. MAC $119
Fast Prototyping and Development of User Interfaces with
Skylights
“It's much easier to adapt to the end-user’s needs than any other product
I’ve seen . . . definitely a programmer’s tool. ’’
- William Elswick, Software Engineer, Compact Video
Quickly design interactive prototypes, then include screens you develop
in your finished application code. Design demos or tutorials.
Skylight combines an intuitive screen/window/menu editor, run-time
windowing, menu handling, and front-end support routines, and “Demo/
Tutorial Maker” program plus detailed low-level primitives. Supports a
variety of pointing devices (mice, tablets, lightpens). All major C com¬
pilers; even use with other languages (BASIC, Pascal, Assembly) with
utility included Bit-mapped graphics upgrade available. No royalties.
Skylight PCDOS *»
I Software, Inc.
Flexible SCREEN
and WINDOW Development
with
ZVIEW Screen Library
Use this field-sensitive tool to devel¬
op data entry screens and windows
and provide run-time flexibility. Se¬
curity level settings restrict inquiry
or update of fields; multiple screen
help display is available at screen
and field level.
NEW Features: Windows can be
stacked, peeled off, and moved at
run-time. You also get automatic
scrolling of data within fields.
ZVIEW gives you full control of
attributes, colors, boxes, protected
fields, scrolling, and more. Load
screens from memory for SPEED.
Field support includes alpha,
numeric, or alphanumeric data types,
case conversion, range checking,
and field comparison. ZVIEW even
provides automatic data conversion
to and from ASCII screen format.
Microsoft C, Lattice 3.0, and Aztec
3.2e. Supports EGA, color, and
monochrome displays.
PCDOS $189
280 Functions
Without “Fat”:
Blackstar ‘C’ Function Library
Without duplicating compiler
library functions, the Blackstar ‘C’
Function Library covers the range.
BOTH Microsoft C and Lattice C
library versions are included in one
product with screen, graphics, file,
text, and serial communications
routines. Extensive device driver
support (including mouse handling).
Low-level utilities and DOS and
memory control routines. And a
great price, too.
Some other libraries are padded
with different functions that do the
same thing, or functions that repeat
routines supplied with your com¬
piler. Sterling Castle trims the fat
to give you over 280 unique
functions.
All source is supplied (most in
C), including routines written in
assembler for speed optimization.
You get versions for small,
medium, and large models. 350
page manual with quick reference
guide and demos. No royalties.
1-800-7-CASTLE PCDOS $99
Call for Your FREE C Programmer’s Directory
CIRCLE 134 ON READER SERVICE CARD
CIRCLE NO. 220 ON READER SERVICE CARD
800 - 421-8006
THE PROGRAMMER’S SHOP™
5-P Pond Park Road, Hingham, MA 02943
Mass.: 800-442-8070 or 617-826-7531 11/86
“I appreciate your service to the programming
community, your prices more than fair and your
newsletter amongst the finest in the business.”
Lawrence
Fooian Systems, Inc.
TECH
DEAN P. GIENGER
NOTEBOOK
XON/XOFF Printer Driver
By using the XON/XOFF software handshaking method shown here,
the PC can support peripherals that have serial interfaces.
A lthough the IBM PC supports parallel printers with ease,
there are times when driving serial peripherals would be
desirable. Many popular printers, such as the Hewlett-Packard
LaserJet, use serial (or RS-232) interfaces.
Because most printers can print characters at only a frac¬
tion of the rate that a PC can send them, a printer must ex¬
change some handshaking , or control signals, to control the
rate at which characters are sent by the PC. This control can
be done through either hardware or software.
The hardware method involves connecting a special wire
between the printer and the PC. When the printer is ready to
accept data, it asserts a logic 1 on this wire. When the printer
is unable to accept data, it asserts a logic 0. The PC must then
check the status of this signal before sending data. This sim¬
ple method of flow control has several drawbacks. First, it re¬
quires an additional wire in the interface cable. Second, the
printer cannot return any additional status data (paper out,
device off-line, and so on) unless additional wires are con¬
nected between the PC and the printer.
The software method involves having the printer send
special flow control characters to the PC to notify it of status
LISTING 1: XON.ASM
; Use DOS MODE to redirect LPT1: to C0M1: and set up the BAUD rate etc
rom_ptr_vec
equ
17h*4
; rom vector location
com
equ
03f8h
; com1=3f8, com2=2f8
code
segment
public
•CODE'
assume
cs:code,ds:code
org
OlOOh
start
proc
far
; patch in the new code
cli
; disable interrupts
sub
ax, ax
; set es segment
mov
es,ax
; copy vector
mov
ax,cs
; reset ptr vector
mov
esiword ptr[rom_ptr_vec+2],ax
mov
ax,offset ptr_int
mov
es:word ptr[rom_ptr_vec],ax
sti
; reenable interrupts
mov
dx,offset
last_byte ; call dos to exit
int
27h
; and stay resident
db
•(c) 1986,
Dean P Gienger 1
start
endp
ptrint
proc
far
; we get here from int 17h
ptr_int:
sti
; enable interrupts
emp
ah,0
; is this an output req?
je
ptr_out
; yes
emp
ah,1
; is it an init req?
je
ptr_init
; yes
ptr_stat:
push
dx
; it must be a status req
mov
dx,com+5
; get status
in
al,dx
and
al,20h
je
ptr_busy
; port is busy
mov
dx,com
conditions. When the printer is able to accept data it will
send a special character, called an XON character—chr(17).
When the printer is unable to accept data, an XOFF charac¬
ter—chr(19)—is sent by the printer to the PC. Other charac¬
ters may be sent to notify the PC of special conditions.
The PC may be configured with either serial or parallel
ports; however, the PC’s software drivers support only the
hardware method of handshaking. The program below pro¬
vides a software driver that allows the PC to use a serial
printer that uses XON/XOFF software handshaking.
The program “steals” the special BIOS printer interrupt
vector reserved for printer functions. This vector is located in
low memory at address 0000:005CH and is normally set to
point to the printer driver code located in the system ROM.
The program redirects this vector to point to its own code
for driving the serial port using XON/XOFF handshaking.
Once the XON program is loaded, it directs all printer output
to the serial port. A serial printer then can be used as if it is a
standard parallel interface printer. Immimii^l
Dean P. Gienger is an engineering consultant in California.
in
and
al,dx
al,7fh
; is there an xoff ?
emp
al,19
; xoff is A S ( 19 )
je
ptr_busy
; yes, it is busy
mov
ah,80h
; else return not busy
pop
dx
iret
ptr_busy:
mov
ah,00h
; return busy status
pop
dx
iret
ptrout:
push
ax
; print character & save
ptr_wait:
mov
ah,2
; wait tiLl printer free
int
17h
,* ready?
and
ah,80h
jz
ptr_wait
; no
pop
ax
; yes, get char from stk
push
dx
mov
dx,com
; send character
out
dx,al
pop
dx
mov
ah,2
; return status
int
17h
iret
ptr_init:
mov
ax, 27
; initialize the printer
int
17h
; send ESC E
mov
ax,45h
; to init printer
int
17h
mov
ah,2
; return status
int
17h
iret
lastbyte:
ptrint
endp
code
ends
end
MARCH 1987
47
c
p
0
E
Myne/L I T Y
R%ErcCIPvR®N c e
COMPAQ DESKPRO 386
The New Standard
Compaq has forged ahead of IBM with the
first 80386-based machine, offering AT
compatibility with twice the performance —
and a bright future in multitasking.
STEVEN ARMBRUST and TED FORGERON
ntil now, Compaq Computer Cor¬
poration has been content with
matching IBM’s personal com¬
puter offerings, merely making minor
improvements to what IBM already had
created. With the introduction of the
Deskpro 386, however, Compaq has
leapfrogged over IBM into brand new
territory. Powered by a 16-MHz Intel
80386 microprocessor and equipped
with 32-bit memory and a speedy hard¬
disk drive, the Deskpro 386 not only
offers compatibility with IBM’s PC/AT at
twice the performance, but also prom¬
ises to run future multitasking operating
environments that will take advantage of
the 80386 processor.
The Deskpro 386 comes in three
models, distinguished only by the hard
disk. The model 40 is equipped with a
40MB hard disk, the model 70 with a
70MB hard disk, and the model 130
with a 130MB hard disk. The monitor,
the amount of memory, and the key¬
board are options that can be selected
with each model. The accompanying
sidebar lists the features available with
the Deskpro 386. The unit reviewed in
this article was the model 40 with 1MB
of RAM, a 1.2MB diskette drive, a 360KB
diskette drive, a 40MB tape backup unit,
a serial and a parallel port, the Compaq
Enhanced Color Graphics Board, and
the Compaq Color Monitor.
At first glance, the Deskpro 386
looks just like the other members of
the Deskpro family. It uses the same
cabinet as the Deskpro 286 and there¬
fore has many of the same advantages
and disadvantages as that unit has (see
“Out from the Shadow of IBM: Compaq
Deskpro 286,” Steven Armbrust and Ted
Forgeron, August, 1986, p. 80). The size
of the system unit is 19^4 inches by 16^
inches by 6^4 inches. Photo 1 compares
its footprint with that of an AT.
Like the Deskpro 286, the Deskpro
386 includes the same unattractive key¬
lock switch on the front of the system
unit, with barely readable switch posi¬
tions. It also has the on/off switch posi-
48
PC TECH JOURNAL
PHOTOGRAPH • MARC DAVID COHEN
DESKPRO 386
Photo 1 : The system unit of the Deskpro 386 is smaller than
the IBM AT. The Deskpro measures 19*4 by 16Vz by 6^4
inches, as indicated by the dotted lines.
Photo 2 : The layout of the enhanced keyboard of the Desk-
pro 386 matches that of the IBM enhanced keyboard in
most respects, but does not have the same IBM feel.
Photo 3 : Screen controls and the power switch are located
on the side of the monitor. The monitor may be tilted up 5
or 10 degrees using the built-in tilt bar.
Photo 4\ Slot 1, the leftmost slot, is the 32-bit slot. The main
connector for this slot is at the front of the system unit. A
small power/ground connector is located near the rear.
Photo 5: The main 32-bit connector is on the bottom left of
the board. The two double rows of pins protruding from the
board are for attaching a piggyback memory module.
PHOTO 3; Compaq Color Monitor
PHOTO 4: Inside the System Unit
PHOTO 5: System Memory Board
50
PC TECH JOURNAL
tioned on the rear panel of the unit
where it is difficult to find. The two ma¬
chines share the convenient feature of a
two-color drive light that shines green
when accessing a 1.2MB diskette and
red when accessing a 360KB diskette.
Two keyboards are available for
the Deskpro 386: one matching the
layout of IBM’s original AT keyboard
and one matching IBM’s enhanced key¬
board. The only difference between the
new Compaq keyboard and the earlier
one is in the layout. The keys still have
a light touch and provide little tactile
feedback. The keyboard plugs into the
front of the system unit, requiring its
removal whenever the cover of the sys¬
tem unit is taken off. As with other
Deskpro models, the keyboard cable
seems to be excessively long, but this
problem can be alleviated by tilting up
the keyboard on its legs and placing the
excess cable underneath. Photo 2 com¬
pares Compaq’s enhanced keyboard
with that of IBM.
With the Deskpro 386, Compaq
offers its new Color Monitor and En¬
hanced Graphics Board, which is com¬
patible with the IBM Enhanced Graph¬
ics Adapter (EGA). The Compaq Color
Monitor is compatible with IBM’s En¬
hanced Color Display. It produces accu¬
rate colors and text that is easy to read.
However, when compared to the new
generation of enhanced color monitors,
such as the NEC Multisync, the charac¬
ters produced by the Compaq monitor
in high-resolution text mode are not as
crisp and clear. The monitor controls
are conveniently placed on the side of
the display where they can be accessed
easily (see photo 3).
The Compaq graphics board works
with both the color display and Com¬
paq’s dual-mode monochrome display.
When connected to the dual-mode
monochrome display and switched into
monochrome emulation mode, the
Compaq graphics board can produce
text with a resolution of 720-by-350 pix¬
els. When connected to the Compaq
Color Monitor (or another enhanced
color display), it offers 16 colors from a
palette of 64 and a resolution of 640-by-
350 pixels. The graphics board also can
be used with an ordinary color display
to generate output equivalent to that
produced by IBM’s Color Graphics Ad¬
apter (CGA). However, it cannot be
connected to an IBM monochrome
monitor (or the equivalent) without
damaging the display. The board can be
installed in other Compaq computers,
such as the Portable or Portable II,
where it can drive either the built-in
dual-mode display or a color display.
80386 ENHANCEMENT
The Deskpro 386 is loaded with extras
that are not available on any other AT-
compatible computer, but by far the
most exciting and obvious of these is
the 80386. This 32-bit microprocessor
from Intel has 32-bit instruction and
data paths, provides real and protected
modes, and offers a virtual-8086 mode
and memory paging that enable it to
handle multiple real-mode applications
(such as DOS applications) simulta¬
neously. (For a complete description of
the capabilities of the 80386, see “Up¬
ward to the 80386,” Caldwell Crosswy
and Mike Perez, February 1987, p. 50.)
The Deskpro 386 system starts run¬
ning with the 80386 in real mode, and a
reboot always returns the processor to
this mode. When operating in real
mode, all the restrictions associated
with 8086/88 processors apply. Seg¬
ments are limited to 64KB, and the
memory address space is 1MB. The
80386’s 32-bit instructions can be used,
however, enabling programs to improve
performance with 32-bit data transfers
and 32-bit operands for instructions.
Protected mode in the Deskpro
386 is compatible with the protected
mode in 80286 machines, but the 80386
increases the memory address space
(from 16MB fco 4GB) and the maximum
segment size (from 64KB to 4GB). In
addition, it also provides memory pag¬
ing, I/O protection, a full 32-bit instruc¬
tion set, and virtual-8086 mode.
Virtual-8086 mode is a special form
of protected mode that enables real¬
mode applications to execute within
protected mode. In virtual-8086 mode,
memory addressing reverts to the
base:offset form used in the 8088 and
in real mode on the 80286 and 80386.
This permits current application pro¬
grams to run, but confines them to the
1MB address space of the 8088. Despite
this limitation, the paging facilities (de¬
scribed below) of the 80386 permit the
1MB real-mode address space to be
mapped anywhere in the 4GB address
space that is available in protected
mode, thus permitting several real¬
mode applications to run concur¬
rently—without any modification.
The Deskpro 386 uses this virtual-
8086 mode and memory paging combi¬
nation to implement its own Compaq
Expanded Memory Manager (CEMM).
This program gives DOS applications
access to the expanded memory out¬
lined in the Lotus-Intel-Microsoft (LIM)
specification without requiring special
bank-switching memory boards.
In the Deskpro 386, the 80386 pro¬
cessor runs at 16 MHz, twice the speed
at which the 80286 runs in the AT. In
addition, the 80386 can access RAM 32
bits at a time (compared with the 16-bit
memory access provided by the 80286).
With this double dose of supercharging,
DOS applications might be expected to
run four times as fast as they do on an
8-MHz AT; however, because the cur-
DESKPRO 386 VITAL STATISTICS
Model 40: $6,499
Memory capacity on system board
1MB memory
Parallel printer interface
None
Serial interface
32-bit memory capacity of system
1.2MB diskette drive
Realtime clock
10MB
40MB hard disk
Expansion slots
32-bit: 1
Model 70: $7,299
16-bit: 4
All features of Model 40 except
8-bit: 3 (one half-size slot)
with a 70MB hard disk.
Available slots
Model 130: $8,799
Model 40 Model 130
All features of Model 40 except
32-bit: 0 32-bit: 0
with a 130MB hard disk.
16-bit: 3 16-bit: 2
8-bit: 2 8-bit: 2
Display adapters (none is standard)
Dual-mode
Other extras available
Enhanced Color Graphics Board
40MB tape backup: $799
360KB diskette drive: $225
Monitors (none is standard)
1MB memory option: $549
Dual-mode monochrome monitor
1MB/2MB expansion board: $849
Enhanced color monitor
4MB/8MB expansion board: $2,995
MARCH 1987
51
UP TO
25 USERS
MADE FOR
THE 80386.
RUNS DOS
PROGRAMS
MULTI-TASKING
learn'hew commands or install new hardware.
Software Support for Thousands
of DOS Programs. Although PC-MOS 386 v
totally replaces DOS. it doesn't make you
replace your favorite DOS programs. So you
can run programs like Lotus 1-2-3. WordStar,
dBASE III, and WordPerfect on the 80386.
Best of all. it uses familiar commands like
DIR and COPY-so you’ll feel comfortable
I with our system.
The Gateway to Endless
ft Features. Distinctive characteristics
■ like file/system security, remote access.
K file, record locking, and built-in color
V graphics support for EACH user set
PC-MOS 386 rv apart from ail previous
operating systems.
Open the Doors to Your
Future TODAY! Call The Software
Link TODAY for more information and
the authorized dealer nearest you.
PC-MOS/386 rM comes in single, five &
25-user versions starting at $195.
Imagine the speed and power of a
$1< m i.t m M i minicomputer in a desktop PC cost*
:ngundei $7.<XM) Now imagine all that power
g* >ing to waste because the operating system
v» m ch« >se was never meant to take advan¬
tage *>t a computer this powerful. It will
take more than just a “window environ¬
ment’* or an outdated operating system
to unlock the 80386.
It will take PC-MOS/386™ J
The First 80386 Operating J
System. Specifically designed for the M
$0386 computer. PC-MOS 386 v opens A
d< >ors. Doors to more memory and H
multi tasking. Doors to thousands
of 1 >OS programs as well as upcom¬
ing 80386-specific software. Its the
^iitr-cuy to the latest technology.,, and H
your networking future. B
Memory Management
Without Boards. PC-MOS exploits
the memory management capabilities
built into the 80386. So. up to four HI
GIGABYTES of memory are access¬
ible to multiple users and to future H
80386-specific applications requiring
megabytes of memoiy. H
Multi-Tasking. Multi¬
user Support for One. Five or
25 Users. PC-MOS 386 M allows
up to 25 inexpensive terminals to be
driven by a single 80386 machine. ^B
So the features of the 80386 can be
utilized at every terminal. And it H
conies in three versions so you can VS
upgrade your system as your com-
pane grows.. .without having to 'Em]
THE SOFTWARE LINK, INC.
8601 Durnvoocy Pc
ma. GA 30338 Telex
‘ 632
SWL1NK
CALL: 800 151-LINK
In Georgia: 404 998-0019
I Valen OE "N1 Inquiries invitee
Dealers: 404/998-0700 OEMs: 404 84.
""TY k
ip
I
TRADEMARK ACKNOWLEDGEMENTS: MultiLink®is a registered trademark of The Software Link, Inc. PC-MOS/SSS™ MultiLink®Advanced, and LANLink™ are trademarks of The Software Link, Inc.
Lotus 1-2-3, WordStar, dBASE III, & WordPerfect are trademarks of Lotus Development Corp., MicroPro, AshtonTate, & WordPerfect Corp., respectively. Prices and technical specifications subject to change.
CIRCLE NO. 196 ON READER SERVICE CARD
DESKPRO 386
rent versions of DOS and the applica¬
tions that run under them are written
for 16-bit processors, code and data are
still accessed 16 bits, rather than 32, at a
time. Despite this underutilization of
the 80386, existing real-mode programs
run approximately twice as fast on the
Deskpro 386 as on an 8-MHz AT.
In the future, programs that take
advantage of the 32-bit instruction set of
the 80386 can expect to improve per¬
formance even more. For example, the
32-bit version of the MOV instruction,
which is available even in real mode,
can potentially double the data-transfer
speed provided by the 80286.
To take advantage of the 32-bit data
path of the 80386, the Deskpro 386 pro¬
vides a 32-bit memory bus for access to
RAM. This bus takes the form of a 32-
bit slot on the system board. Compaq
claims that this is not a general-purpose
bus, but merely a mechanism to opti¬
mize the performance of the Deskpro
386 memory subsystem. It enforces this
opinion by providing just a single 32-bit
slot and by not supplying any RAM on
the system board itself. A 32-bit mem¬
ory board, supplied in the standard
configuration with 1MB of soldered
RAM, fits into this slot. With additional
256K-by-l static-column DRAM chips,
this board can be expanded to 2MB.
One of two piggyback boards can be
added to the 32-bit memory board: one
provides 1MB, expandable to 2MB, with
256K-by-l chips; the other provides
4MB, expandable to 8MB, with lM-by-1
chips. Thus, the Deskpro 386 can con¬
tain as much as 10MB of RAM, all ac¬
cessed via the single 32-bit slot.
The 32-bit slot consists of an 80-pin
connector whose signals are generated
directly by the 80386. This memory bus,
which runs at 16 MHz, is simply an ex¬
tension of the processor’s local bus.
This direct interface minimizes the sig¬
nal delays between the processor and
the memory subsystem.
The 32-bit memory boards are con¬
figured into a 36-bit wide arrangement,
consisting of 32 bits of data and 4 bits
of parity (one parity bit for each byte).
On the system memory board, and on
the 1MB/2MB piggyback board, the
memory chips are 256K-by-l static-col¬
umn DRAMs, yielding a memory bank
size of 256K 32-bit double words, or
1MB. On the 4MB/8MB piggyback
board, the memory chips are lM-by-1
DRAMs, yielding memory banks of 4MB.
With a 16-MHz processor, fast ac¬
cess to RAM is essential; otherwise, the
speed advantages of the processor are
negated. In the PC, the cycle time of the
8088 is 210 nanoseconds (ns), and a
To access memory in each 1MB bank, the memory subsystem specifies nine-bit
row and column addresses. Static-column RAM allows the memory to respond in
zero wait states if the row address is the same as in the previous memory access.
bus cycle is 840 ns, enabling readily
available 200-ns DRAM chips to be used.
The 200 ns is the access time, or the
time required for a charged DRAM to
return information. Additional time is
required to recharge the DRAM for the
next memory access. The sum of the ac¬
cess time and the recharge time is the
DRAM cycle time, which is the actual
time needed to obtain information from
the chip. In 200-ns DRAM chips, the
cycle time is 345 ns.
The cycle time of a 16-MHz 80386
is 62.5 ns. Using 200-ns RAM chips and
an ordinary memory-accessing scheme
would reduce the overall performance
to little better than that of a PC, because
wait states would have to be inserted to
make the processor spend some of its
time waiting for memory.
The easiest way to improve mem¬
ory access times is to remove all wait
states and use faster DRAM chips. How¬
ever, to make significant improvements,
chips with memory access times in the
60-ns range are required, and those are
prohibitively expensive. Computer
manufacturers have resorted to other
schemes to obtain better performance
from the memory subsystems on high-
performance computers while still us¬
ing less expensive DRAM chips.
One method is to use a memory
cache, a limited amount of high-speed
static RAM that is used to store copies
of the memory locations that are ac¬
cessed most often. With a large enough
memory cache and an appropriate algo¬
rithm for copying data to and from the
cache, many caching systems are 90-per¬
cent effective (that is, more than 90 per¬
cent of the time, the data needed will
already be in the high-speed cache).
Caches are more expensive than some
other methods, because they require
costly, high-speed SRAM chips in addi¬
tion to the RAM in the user-address
space. Extra board space is also re¬
quired for the memory that makes up
the cache and its support circuitry.
Another method for improving
memory access times uses interleaved
(or bank-switched) memory. This
scheme assumes that most memory ac¬
cesses are sequentially ordered. There¬
fore, the memory is divided into two or
more banks, with the sequential ad¬
dresses interleaved among the banks.
For example, in a 32-bit computer with
two memory banks, the first 32 bits
would be in bank 0, the second 32 bits
in bank 1, the third 32 bits back in bank
0, and so on. This interleaving speeds
sequential accesses by enabling one
memory bank to be fetching a subse¬
quent double word while the processor
accesses the previous double word
from the other bank. However, the ben¬
efit of overlapped accesses is not with¬
out penalty. Additional logic is required
to implement the interleaved memory,
and initial accesses (and consecutive ac¬
cesses to the same bank) are longer
than they would be if the interleaving
circuitry were not present.
Interleaving improves the perfor¬
mance of sequential accesses, but real
mode on the 80386 (which almost all
current applications use) requires a seg¬
mented program structure—that is, sep¬
arate (often physically separated) seg¬
ments are used to store a program’s
code and data. As a result, memory ac¬
cesses often bounce around between
the code and data segments with few
extended periods of sequential ac¬
cesses; thus, much of the advantage of
an interleaved architecture is lost.
A third alternative, and the one
used in the Deskpro 386, is memory
MARCH 1987
53
KNOWLEDGEMAN/2
LETS YOU GET TODAY’S WORK DONE
AND PLAN FOR TOMORROW.
KnowledgeMan/2,® the most advanced
business software available, lets you be more
productive than ever before and in less time.
A , These powerful business
capabilities, tightly fused
ipjgjy into a single pregram, work
together for you:
□ Relational data manage¬
ment □ Spur-of-the-
moment inquiry □ Spreadsheets
□ Statistical analysis □ Forms manage¬
ment □ Programming language
□ Options for creating graphs, processing
text, generating reports, painting forms,
mouse processing and remote communica¬
tions.
KnowledgeMan/2 s four user interfaces
make it easy for you... and all your business
people... to work with KnowledgeMan/2:
□ Menus, help screens and easy-to-use
documentation guide your every step, if
you’re just beginning.
□ Direct commands for the power usei; with
help available when you want it
□ K-Chat, the optional natural language
interface, for asking for information in
plain English.
□ Procedural programming for the advanced
user
Get KnowledgeMan/2 working for you
today. And start planning for tomorrow.
KnowledgeMan/2 is available for the IBM
PC, PC/XT PC/AT and compatibles. Multi¬
user versions are offered for the DEC VAX
system and 3Com, Novell and IBM PC local
area networks.
Your local mdbs sales representative can
provide additional information. For the
location of the sales office nearest you, call
or write mdbs.
mdbs and KnowledgeMan/2 are registered trademarks and K-Chat a trademark
of mdbs, Inc. “VAX” is a registered trademark of Digital Ecpiipment; “PC/XT”
and “PC/AT’of IBM Corp.; 3Com of 3Com Corp.; Novell of Novell, Inc.
KNOW LEDGE
man/ ^ @
THE UNIVERSAL KNOWLEDGE MANAGEMENT SYSTEM
' mdbs
mdbs/Marketing and Sales • EO. Box 248 • Lafayette, IN 47902 • 800/344-5832 • 317/463-2581 (Indiana, Canada) -—
CIRCLE NO. 211 ON READER SERVICE CARD
DESKPRO 386
When the Deskpro 386 is set up for 640KB of conventional memory, the remaining memory in the first megabyte is located at
addresses below 16MB. The BIOS is copied into the top 128KB. Other 32-bit memory is assigned addresses beginning at 1MB.
paging, in which the system RAM is di¬
vided into areas of equal size called
pages. With the paging circuitry in oper¬
ation, successive accesses to memory
within a page are extremely fast, while
successive accesses to different pages
are slower. The segmented architecture
of real mode negates some of the ad¬
vantages of paging, just as it does with
interleaving. Accessing memory outside
a page boundary enacts the same type
of performance penalty as consecutively
accessing a single bank of an inter¬
leaved system.
The Deskpro 386 implements
memory paging by using static-column
RAM chips. For memory access, each
1MB bank of RAM is logically divided
into rows and columns, and access to
memory is obtained by presenting a
row address and column address. These
addresses are latched internally using
the row address strobe (RAS) and col¬
umn address strobe (CAS). The RAS and
CAS combination identifies a specific
32-bit double word—the amount of
memory that the 80386 can access in a
single memory fetch. Each row and col¬
umn address is a 9-bit quantity, imply¬
ing 512 (or 2 9 ) items in each row and
column. With each item being 4 bytes
(32 bits) long, each page (or specific
row address) of memory consists of 512
(2 9 column addresses) by 4 bytes, or
2KB of memory. With 512 of these
pages, the addressing scheme is able to
handle 1MB of memory. Additional 1MB
"banks are accessed in the same manner,
with their own row and column ad¬
dresses (see figure 1).
With static-column DRAM chips,
memory accesses within the same page
can happen with zero wait states, be¬
cause the RAS is maintained from the
previous memory access. When a new
memory access is required, the row ad¬
dress is compared with the value al¬
ready maintained by the memory chips.
If the new row address is the same as
the previous one (that is, the memory is
in the same 2KB page), only a new col¬
umn address needs to be presented to
the DRAM. This results in a zero-wait-
state access. However, if the new row
address is different (that is, the memory
is in a different 2KB bank), the proces¬
sor must wait for the memory to re¬
charge and present a new row address
followed by column address. This pro¬
cess results in two wait states.
There is one situation, however, in
which access to memory occurs at two
wait states, even if the access is within
the same page. If an idle bus cycle oc¬
curs, the memory subsystem turns off
paging mode, allowing the memory
subsystem to get a head start on what¬
ever memory access it predicts will hap¬
pen next. If the next access is within
the same page, however, it will occur at
two rather than zero wait states, be¬
cause the processor will have to restart
paging mode and present both a row
and a column address.
Idle bus cycles are common when
writing to memory because the number
of processor cycles required to execute
some write instructions is more than
the bus cycles needed to transfer the
data. Thus, idle bus cycles are inserted,
which turns off the paging.
Compaq turns off paging when an
idle cycle occurs because tests showed
that an idle cycle typically precedes an
access outside the page. Therefore,
even though some accesses within a
page are slowed to two wait states,
overall performance is increased by 1
to 2 percent by using the idle cycle to
anticipate accesses outside a page.
The paging scheme used in the
Deskpro 386 complements the way that
the 80386 instruction prefetch works.
The sequential nature of instructions
and the 80386’s desire to keep the pre¬
fetch queue full enable the memory
subsystem to operate within a physical
page much of the time.
Compaq claims that in average cir¬
cumstances, approximately 60 percent
of all memory accesses occur within a
page. Therefore, the memory in the
MARCH 1987
55
BOOKMARK m Data Protection Software
Automatically marks your place so you can resume where you left off.
Runs with most software so if you decide to call it a day you can power down, and upon restart
BOOKMARK will bring you back where you left off...it’s like having a BOOKMARK in your computer!
Stop wasting time navigating through menus .. . or teaching novices.
Easy to use. You choose how often work is saved, by number of keystrokes or length of time.
Work in progress can be resumed within seconds after system crash, power failure, accidental
reset or power down.
Costly battery backup systems are no longer needed when work in progress is already saved to the
point of the previous BOOKMARK placement.
BOOKMARK is a memory-resident utility that automatically and periodically saves work in
progress to a reserved area of the hard disk.
Suggested Retail Price $69.95 Requirements:
IBM PC/XT/AT or 100% Compatible
64k to 640k
IBM DOS 2.1 or Higher
1 Floppy Disk Drive • Hard Disk Drive (10 Megbytes Minimum)* Video Display Adapter, IBM (Monochrome, Color, Enhanced Color). Hercules, AST
(BOOKMARK occupies an equivalent space on hard disk as in system RAM plus video RAM)
To Order, Call INTELLISOFT International or Ask Your Dealer for BOOKMARK
INTELLISOFT:
IIMTEHIM ATIOIM AL
Call Toll Free (800) 544-MARK • In California Call Toll Free (800) 543-MARK
70 Digital Drive • P.O. Box 1972-Novato, California 94948 • (415) 883-1188
BOOKMARK 1 * is a trademark of INTELLISOFT International. Copyright© 1986 by INTELLISOFT International. All rights reserved.
IBM PC/XT/AT are registered trademarks of International Business Machines Corporation. Hercules is a trademark of Hercules Computer Technology.
AST is a registered trademark of AST Research, Inc.
CIRCLE NO. 114 ON READER SERVICE CARD
FIGU RE 3: Memory-mapped Hardware Register
DESKPRO 386
Deskpro 386 must average 0.8 wait
states per 32-bit access. For tightly
coded, highly sequential applications,
such as graphics drivers, it is possible
to approach zero wait states.
To put these figures into perspec¬
tive, consider the difference in access
times between 32-bit memory on the
Deskpro 386 and 8-bit memory over the
PC bus. A 32-bit access within the same
page on the Deskpro 386 requires 2
processor cycles (at 62.5 ns per cycle)
or 125 ns. A 32-bit access outside the
current page requires 4 processor cy¬
cles or 250 ns. Assuming 60 percent of
the accesses occur within the current
page, the average 32-bit access time is
175 ns. A similar 32-bit access from 8-
bit memory requires 48 processor cy¬
cles, or approximately 3 microseconds.
No wonder the Deskpro 386 seems fast.
Tests conducted for this article re¬
vealed that it was possible to achieve
zero wait states when reading and writ¬
ing memory. However, normal pro¬
grams will not achieve this level of per¬
formance unless their memory accesses
are limited to the same 2KB page. One
wait state is more realistic.
It remains to be seen whether the
memory paging scheme used in the
Deskpro 386 really performs better than
interleaving or is more cost-effective
than caching. Once the various kinds of
systems become readily available, more
conclusive real-world performance mea¬
surements can be taken.
NO MEMORY WASTED
In its base configuration, the Deskpro
386 contains 1MB of 32-bit RAM sol¬
dered into a system memory card that
fits into the 32-bit expansion slot. With
jumpers on this memory card, the user
can select 256KB, 512KB, or 640KB of
conventional memory. The remainder
of the 1MB is automatically mapped to
just beneath the 16MB address. Figure 2
shows the memory map for the most
common configuration (640KB).
Although the extra 384KB of RAM
is not available via normal DOS opera¬
tions, Compaq has not let that extra
memory go to waste. The uppermost
128KB segment, located at address
FE0000FI, is used to improve the BIOS
performance. Upon start-up, the Desk-
pro 386 copies the system BIOS and the
Compaq Enhanced Graphics Board
BIOS (if available) into that memory
and remaps the memory via special
hardware map registers so that it re¬
places the 128KB area normally re¬
served for the system ROM (from
0E0000H to 0FFFFFH). Once this map¬
ping takes place, applications can access
BITS
7
6 5
4 3
2 ]
l 0
L
Relocate the 128KB block starting
at FE0000H to address OE0000H
(overlaying the ROM addresses)
Do not relocate RAM. The 128KB
block will be available only at
address FE0000H
- 0 = Write-protect the 128KB block of
RAM starting at address FE0000H
1 = Do not write-protect the memory
Writing to location 80C00000H sets the memory-mapped hardware register that is
used to remap and write-protect the memory into which the ROM BIOS is copied.
FIGURE 4: Memory-mapped Diagnostics Register
BITS
7
6
5
4
3
2
1
0
-0 = Parity error in byte 0
-0 = Parity error in byte 1
-0 = Parity error in byte 2
-0 = Parity error in byte 3
-L - qo = 640KB of base memory 10 = 512 KB of base memory
01 = Invalid 11 = 256KB of base memory
-0 = The system memory board, the second 1MB of RAM
0 = A piggyback board is installed on the system memory board
Reading location 80C00000H returns the status of the memory configuration
jumpers and the parity bits for each of the four bytes of a 32-bit double word.
the remapped BIOS either at address
FE0000H or 0E0000H; the actual system
and graphics board ROM devices are no
longer accessible. Even with the remap¬
ping, this procedure relocates the
graphics board BIOS, which normally
starts at 0C0000H, to 0E0000H to
0F0000H. Therefore, only the BIOS
from a Compaq Enhanced Graphics
Board is copied because there is no as¬
surance that another BIOS will contain
position-independent code that works
properly when relocated.
By remapping the BIOS into 32-bit
RAM, the Deskpro 386 dramatically im¬
proves the BIOS performance. Instead
of residing on 250-ns ROM chips ac¬
cessed via a 16-bit bus in the case of
the system BIOS or via an 8-bit bus in
the case of the enhanced graphics
BIOS, the remapped BIOS is accessed
out of 32-bit static-column RAM. This
RAM is write protected by special hard¬
ware registers so that out-of-control
programs do riot accidentally write to
the BIOS and cause damage.
The Deskpro 386 contains a mem¬
ory-mapped hardware register called
the RAM relocation register that con¬
trols the mapping and write protection
of this system RAM. It is a write-only
register available at address 80C00000H.
Bits 0 and 1 control the remapping of
the ROM space and the write protec¬
tion, as shown in figure 3.
Reading the same memory location
(80C00000H) returns the contents of
the diagnostics register. This register
can pinpoint which byte within a 32-bit
double word caused a parity error. It
also identifies which memory is 32 bits
so that diagnostics programs can use
32-bit reads and writes to speed up
their RAM tests. Figure 4 shows the bit
definitions of the diagnostics register.
Despite the speed improvements
caused by the remapped ROM, this fea¬
ture is not likely to improve overall
MARCH 1987
57
tiippnu tminroti
mmt iinm?inWHnrtmT*|{}i?i
timm:
3ES0BQ
ISllP
rrrrt’TrtT?.
One language supports this community.
That language is Pascal-2, now on the
PC and producing the fastest, most
compact code available. For the
professional programmer, imagine what
you can do with this power:
Cut execution time by 20% to 200%
Transport MS-DOS programs to VAX,
PDP-11, and 68000 machines with only
minor adjustments Cut executable
program size by up to 50% Use all of
DOS-addressable memory through
efficient large-memory model Speed
error correction and save development
turn-around time with sophisticated error
checking and reporting Find and fix
logical errors with the interactive source-
level debugger Access DOS services
Riscal-2
FOR MS-DOS
and network files Call Microsoft
FORTRAN, C, Pascal, and assembler
Upgrade from TURBO Pascal with
compatible strings, equivalent procedures
and access to TURBO graphics.
Plus!
Intel CEL87 mathematical library for
scientific computing A special interface
between Pascal-2 and the programmable
BRIEF text editor (editor optional).
Certified ISO standard Level 1.
Dramatically improve your productivity
and introduce your PC software
to the VAX next door.
Call or write OREGON SOFTWARE, INC.
6915 SW Macadam Avenue,
Portland, OR 97219 (800)367-2202
TWX: 910-464-4779 FAX: (503) 245-8449
OREGON !ii SOFTWARE
Real tools for real work
AT LAST THE PERFORMANCE IS PORTABLE
The following are trademarks: Oregon Software, Pascal-2, Oregon Software, Inc.: IBM. PC-AT, PC-DOS International Business Machines Corporation: Intel, Intel Corporation;
MS, Microsoft Corp.; TURBO Pascal, Borland International, Inc.: BRIEF, UnderWare Corp.; PDP, VAX, Digital Equipment Corp.
CIRCLE NO. 200 ON READER SERVICE CARD
DESKPRO 386
performance appreciably. The most per-
I formance-sensitive areas of the BIOS
I are the screen display routines, and
most applications circumvent those rou¬
tines by writing direcdy to the display
adapter RAM via the 8-bit interface. Pro¬
grams that use the BIOS for screen op¬
erations, such as DIR, TYPE, and other
DOS commands, are much faster. Thus,
the remapped BIOS can affect users’
perceptions of overall performance,
simply because many people judge a
computer’s speed by how fast a DIR list¬
ing scrolls up the screen.
On the other hand, if the BIOS
were not copied into RAM, the perfor¬
mance of some tight loops that use the
BIOS might actually be worse than on
an 80286-based computer. This degrada¬
tion could occur because the 80386 is
optimized for 32-bit operations, while
the BIOS is contained on ROM chips ac¬
cessed via the 16-bit bus.
For example, the 80386 is constant¬
ly trying to fill its prefetch queue with
the instructions it expects will execute
next. This prefetch queue is 32 bits
wide, so each prefetch is 32 bits, wheth¬
er or not the bits come in one access
from 32-bit memory, two accesses from
16-bit memory, or four accesses from 8-
bit memory. A prefetch of system BIOS
instructions from ROM requires two
separate 16-bit accesses, both of which
must be completed before the proces¬
sor can continue with other operations.
Because of the extra time required for
two separate memory accesses, a pro¬
cessor that was idle at the start of the
prefetch might be holding up other op¬
erations by the time it finishes. This ef¬
fect will be especially noticeable in pro¬
grams that have small (two instruction)
loops, because the jump instruction at
the end of the loop flushes the prefetch
queue. Users also might notice this ef¬
fect if they do not use the Compaq En¬
hanced Graphics Board, because the
Deskpro 386 will not copy non-Compaq
I BIOS code into RAM. In this case, four
separate 8-bit accesses are required for
each 32-bit fetch because the graphics
board uses an 8-bit interface.
The remaining 256KB of RAM not
available via normal DOS operations is
referred to by Compaq as built-in mem¬
ory . Two programs are provided to en¬
able ordinary DOS applications to take
advantage of this memory: CEMM and
VDISK, a RAM-disk program. Other pro¬
grams will have difficulty using this
built-in memory, because it resides at
high memory addresses just below the
remapped BIOS. Most programs , that
use extended memory require that such
memory begin at the 1MB address and
that no gaps exist in the memory. This
is not a problem, however, for the
CEMM and VDISK programs. Even if
other extended memory is added,
CEMM and VDISK can use both the
built-in memory and the other ex¬
tended memory automatically.
CEMM was developed jointly with
Microsoft to provide an expanded mem¬
ory interface to extended memory.
CEMM uses the virtual-8086 mode of
the 80386 in combination with the
80386’s paging capability to support the
LIM expanded memory specification,
without the need for special bank¬
switching memory boards such as
Intel’s Above Board. CEMM simulates
the bank-switching hardware by map¬
ping the Deskpro 386’s 32-bit extended
memory into the page frame specified
in the LIM standard. This enables DOS
applications that support the LIM speci¬
fication to access additional memory up
to the 8MB limit of the specification.
CEMM grants flexibility to the large
amount of fast 32-bit memory that can
be added to the Deskpro 386. For ex¬
ample, Intel’s QUIKMEM2 RAM disk,
Two programs are pro¬
vided to enable ordinary
DOS applications to take
advantage of built-in mem¬
ory. CEMM and VDISK
which normally requires an expanded
memory board, ran without difficulty
from extended memory when using
CEMM. The added flexibility has its cost,
however. System overhead for handling
interrupts increases in virtual-8086
mode because of the time required for
the 80386 to switch between protected
and virtual-8086 modes. Thus, programs
that run in virtual-8086 mode execute
approximately 5 percent slower than
programs that run in real mode.
In addition, other programs that
run in protected mode cannot be used
when CEMM is active. Attempts to run
such programs (RAM disks and disk
caches are two examples) cause CEMM
to display the following message:
Privileged Operation Error
Deactivate CEMM and Continue (C) or
reBoot (B) (OB)?
When this message occurs, the user can
either deactivate the expanded memory
and continue with the program or re¬
boot the computer.
To avoid such messages when run¬
ning software that uses protected mode,
the user can switch expanded memory
on or off from the keyboard, using the
commands CEMM ON and CEMM OFF.
CEMM AUTO is the default setting, mak¬
ing expanded memory (and its asso¬
ciated overhead) available when re¬
quested by an application program.
386 EXTRAS
As mentioned earlier, additional mem¬
ory and piggyback cards can be added
to the Deskpro 386 system memory
card to supply as much as 10MB of
high-speed, 32-bit RAM. Other 16-bit
memory cards such as those used in the
AT can be installed in addition to or in
place of some of the 32-bit RAM. How¬
ever, the performance difference be¬
tween the 16-bit expansion bus and the
32-bit memory bus is so extreme that
16-bit memory should be added only
as a last resort.
Another convenient feature of the
Deskpro 386 is its processor speed con¬
trol, which is designed to provide high
performance while maintaining compat¬
ibility with programs that depend on
program execution speed for critical
timing functions. With the SPEED op¬
tion of the MODE command (or BIOS
interrupt 16H, AH=F0H), the processor
speed can be set anywhere from slightly
less than the 4.7 MHz used in the PC’s
8088 to 16 MHz. Unlike the Deskpro
286, the Deskpro 386 does not support
special keyboard sequences to switch
in or out of any of these modes (the
Deskpro 286 uses Ctrl-Alt-/ to change
speeds). Only the MODE command or
BIOS interrupt 16H can be used. Five
options of the MODE command affect
the processor speed:
MODE SPEED = COMMON
MODE SPEED = FAST
MODE SPEED = HIGH
MODE SPEED=AUTO
MODE SPEED = num
The COMMON setting causes the
80386 to simulate the speed of a 6-MHz
80286. FAST simulates an 8-MHz 80286.
HIGH sets the speed to a full 16 MHz.
In AUTO mode, the default speed
setting, the processor operates at full
16-MHz speed until a diskette access oc¬
curs; then it switches to 8-MHz (FAST)
mode until the disk access is complete,
when it switches back to 16 MHz. The
BIOS recognizes when to switch speeds
by keying on the diskette’s motor-on
switch. The AUTO mode is intended to
help users install and run copy-pro-
MARCH1987
59
DESKPRO 386
TABLE 1: MODE SPEED Parameters
SYSTEM SPEED SIMULATED
MODE COMMANDS
8088-based PC
MODE SPEED=3
6-MHz AT
MODE SPEED=COMMON or MODE SPEED=16
8-MHz AT
MODE SPEED=FAST or MODE SPEED=18
16-MHz 80386
MODE SPEED=HIGH or MODE SPEED=50
The MODE SPEED command can be used to change operating speed. This table
correlates the MODE SPEED parameters with the numeric values entered.
tected programs, particularly those that
require a key diskette. As Compaq real¬
ized, most copy-protection schemes are
speed sensitive. With the processor
slowed just during diskette accesses, the
copy-protection mechanism can succeed
without forcing the computer to run
permanently at the slower speed. After
installation (or key-diskette checking) is
complete, the Deskpro 386 returns to
16-MHz operation.
The last form of the MODE SPEED
command allows users to specify a
numeric value from 1 to 30 for the pro¬
cessor speed. This form of the com¬
mand corresponds to the way the speed
is set using BIOS interrupt 16H and
permits users to select from a large
variety of speeds. Table 1 shows how
these numbers correspond with the
other MODE SPEED options.
The Deskpro 386 implements the
speed controls by using the 80386
HOLD signal. The 80386 is in a HOLD
state whenever a memory refresh oc¬
curs. Therefore, to slow down the pro¬
cessor, the refresh period is simply ex¬
tended, reducing the amount of time
that the 80386 is actually executing
instructions. This method of slowing
down the processor is better than
adding memory wait states because it
does not affect the bus bandwidth or
the latency for direct memory access
(or other bus master operations). How¬
ever, extremely tight program loops
that execute within the time of a refresh
cycle and require a slowed processor
might not work correctly.
The Deskpro 386 uses a signal
from an 8254 interval timer to lengthen
the refresh period. The 8254 timer is
programmed using the values in the
BIOS interrupt 16H; function request
AH=F0H; the MODE SPEED=num com¬
mand; or the values that correspond to
the other MODE SPEED options.
Normally, the processor speed is
set in its default state (AUTO). This
permits 16-MHz speed during most sys¬
tem operations, but still allows copy¬
protected programs to be loaded from
diskette. The other settings can be use¬
ful for running speed-sensitive pro¬
grams such as games. One especially
nice touch is that any selected speed
survives a warm reboot of the comput¬
er. This means that even action games
written especially for a 4.77-MHz 8088
can be run by first selecting a low
speed, such as MODE SPEED=03 and
then rebooting the computer with the
game disk in drive A:.
Because the Deskpro 386 needs an
8254 signal for its speed control, it con¬
tains two 8254 timers, one more than
the AT. Both timers have three separate
counters. In the first timer, which pro¬
vides the same functions as the 8254 on
the AT, counter 0 is connected to the
8259 interrupt controller and provides
the system timer interrupt for time-of-
day, diskette time-out, and other system
functions; counter 1 generates the re¬
fresh request signal; and counter 2 gen¬
erates the tone for die speaker.
The second 8254 timer provides
functions not found in the AT. Counter
1 of the second timer is unused; coun¬
ter 2 extends the refresh period as just
0 ne feature that the Desk-
pro 386 might be expected
to contain, but does not,
is a socket for an 80387
numeric coprocessor.
described; and counter 0 provides one
of the most interesting features of the
machine. It is a fail-safe timer that can
generate interrupts on the nonmaskable
interrupt line at regular intervals. The
Compaq documentation states that
operating systems can use this signal to
prevent the system from locking up. It
also claims that this function is intended
for future operating system use. There¬
fore, this system “heartbeat” might be
included in versions of DOS developed
for the 80386 processor. A switch on
the system board can turn the fail-safe
timer on or off.
A Motorola MCI46818 serves as the
Deskpro 386’s realtime clock and stores
configuration information. This compo¬
nent, which also is used in the AT, con¬
tains 64 bytes of memory. The first 14
are used by the clock, and the last 50
are used to save the system configura¬
tion when the power is turned off.
Three of the bits in configuration byte
45 (2DH) store additional information
not maintained by the AT: bit 0 indi¬
cates whether Compaq’s dual-mode
monitor is installed; bit 1 indicates
whether the audible key-click feature
is enabled; and bit 3 indicates whether
a Compaq or non-Compaq graphics
adapter is installed.
The Deskpro 386 has other fea¬
tures not found in the AT, most of
which are also available in the Deskpro
286. These include the Ctrl-Alt-plus and
Ctrl-Alt-minus sequences to increase or
reduce the loudness of the key clicks
and the optional tape backup unit.
The speed and capacity of the tape
backup unit has been improved over
the units previously available with the
Deskpro computers. Tape backup now
is twice as fast as earlier models; and
the new unit can back up 40MB of in¬
formation instead of 10MB, because it
uses the 3M DC2000 3^-inch cartridges
rather than the DC1000 cartridges. For
compatibility with earlier Compaq com¬
puters, the new tape unit can read the
DC1000 tapes produced by other Com¬
paq tape units, but it cannot write to
them. The new tape unit can be in¬
stalled in the Deskpro 286.
Unfortunately, on several occasions
the tape drive in the tested unit refused
to back up data successfully. It locked
up during the middle of a backup oper¬
ation and could not be restarted except
by turning the power off and on again.
The backup operation was tried at sev¬
eral processor speeds, but the errors
still occurred frequently. These prob¬
lems did not reappear when another
unit was tested, but the reliability of
Compaq’s higher-capacity tape drives
should be questioned nonetheless.
One feature that the Deskpro 386
might be expected to contain, but does
not, is a socket for an 80387 numeric
coprocessor. This omission probably
occurred because the design of the
80387 was incomplete when the Desk-
pro 386 was developed. The machine
does have a socket for the 80287, which
has a different number of pins and a
different pin layout than the 80387. A
further drawback is that the Deskpro
386 supports only 4- and 8-MHz 80287s,
not the 10-MHz parts that are now
60
PC TECH JOURNAL
widely available. A switch on the system
board indicates whether a 4- or 8-MHz
80287 is installed.
LOOKING INSIDE THE 386
The box housing the system unit of the
Deskpro 386 is virtually identical to that
of the Deskpro 286, so the joys and sor¬
rows of installation are also the same.
On the negative side, Torx screws are
used in most of the fastenings, and Torx
screwdrivers are often difficult to find.
Further, a metal brace is mounted on
the left side of the system unit, immedi¬
ately over slot one (the 32-bit slot). To
take out the memory board, the brace
has to be removed.
On the positive side, the cover of
the system unit is held on by fewer
screws on the rear panel so it is easier
to remove than the cover of the Desk-
pro 286. Instead of selecting the correct
three of eight screws, all of which look
as if they need to come out, users now
choose three of four screws.
Compaq has improved the installa¬
tion process immensely by gluing a
quick-reference card to the top of the
peripheral bay enclosure. This card
contains a drawing of the system board
with callouts identifying all the expan¬
sion cards, the 80287 socket, the system
board switches, the power supply and
power connectors, and the system
ROMs. In addition, it identifies the drive
connectors, lists the settings for the sys¬
tem board switch, and lists the jumper
selections foir the memory board and
disk controller board. With this conve¬
nient reference, the experienced user
can perform almost all installation tasks
without opening a manual.
The peripheral bay in the Deskpro
386 is capable of containing four half¬
height drives. This is a smaller area
than the AT provides, but the extra
space underneath the bay is filled with
shock-mounting material to protea the
drives from damage.
One well-designed feature is the
easy-to-reach location of the 80386 and
80287 sockets on the left side of the
system board. The B1 stepping of the
80386 is used in the Deskpro 386. Al¬
though this version of the 80386 has
several programming anomalies, Com- .
paq’s technical reference contains 10
pages of valuable information that de¬
scribes how to avoid problems with
the stepping of the 80386. Most of the
anomalies are of interest only to de¬
signers of proteaed-mode operating
systems. Application programmers will
rarely encounter any problems.
As shown in photo 4, the Deskpro
386 has eight expansion slots—three 8-
bit slots (one of them half size), four
16-bit slots, and one 32-bit slot. The 8-
bit and 16-bit slots operate at 8 MHz for
compatibility with boards designed to
operate in the AT. The 32-bit slot is slot
1, which is the leftmost slot in the
photo. This slot consists of two connec¬
tors: an 80-pin conneaor positioned at
the front of the system unit and a small
one next to slot 2 that is actually a sec¬
ond set of power and ground signals
for improved power distribution.
The system memory board, shown
in photo 3, fits into the 32-bit slot. The
board comes standard with 1MB of
RAM, which is soldered in place. Sock¬
ets are available for an additional mega¬
byte on the board, as are connectors for
adding a single piggyback card. The
memory board and piggyback card ac¬
cept only static-column RAM chips. With
T \e system memory board
comes standard with 1MB of
RAM, which is expandable to
2MB. More can be added
the largest piggyback card installed,
10MB of RAM can be accessed from the
system memory board.
The system board has only one
switch block. It specifies the monitor
type, default speed setting, whether the
numeric coprocessor is present and, if
so, the speed at which it runs, and
whether the fail-safe timer is enabled.
Of the remaining seven slots, two
are occupied with a 40MB hard disk—
one 8-bit slot by the graphics controller
and one 16-bit slot by the multipurpose
hard-disk controller board. The multi¬
purpose board controls the 40MB hard
disk, the diskette drives, and the tape
drive. On the units with 70MB or
130MB hard disks, another 16-bit slot is
occupied, because the larger capacity
drives require a separate controller.
In the model 40 unit, the multipur¬
pose hard-disk controller is conneaed
to two diskette drives (a 1.2MB drive
and a 360KB drive), a 40MB hard disk,
and a 40MB tape backup unit. The two
diskette drives and the tape backup unit
slots are attached to a single connector
on the controller in a daisy-chain fash¬
ion. The controller supports a second
40MB drive, but the power supply, the
same 192-watt model used in the Desk-
pro 286, is not powerful enough to han¬
dle two hard disks and a tape drive.
Therefore, if a second hard disk is
added, the tape backup unit must not
be included. To pack all of that func¬
tionality into a single controller board,
Compaq uses special 40MB disks. The
drives contain much of the control cir¬
cuitry on the drive circuit board rather
than on the controller board.
The 70MB and 130MB drives do
not connea to the multipurpose con¬
troller board. Both of these drives use
the ESDI interface, so they require a
separate controller card that supports a
single drive. Both controllers use the
same I/O addresses when communicat¬
ing with the hard disks, so if a 70MB
or 130MB drive is included, no 40MB
drives are supported.
Although only the 40MB, 70MB,
and 130MB drive options are available
from Compaq, the ROM BIOS supports
47 types of hard disks. Table 2 lists the
drive types and charaaeristics. All the
Deskpro 386 drive types are supported
by the AT, with the same type numbers.
A serial and a parallel port are also
contained on the multipurpose hard¬
disk controller. The serial port uses a 9-
pin, male, D-shell conneaor. The paral¬
lel port uses a 25-pin, female, D-shell
conneaor. These conneaors are the
same as those used in the AT’s parallel/
serial card. The serial port can be
switched between COM1 and COM2.
The parallel port is set to LPT1, but it
can be disabled if it conflicts with the
ports on other expansion cards.
STANDARD SOFTWARE
GW-BASIC version 3.0 and MS-DOS 3.10
are available at extra cost with the
Deskpro 386. Included with this pack¬
age is a DOS 3.2 support disk that con¬
tains a replacement set of disk utilities
that works with IBM’s PC-DOS 3.2 and
is aware of the Deskpro 386’s 40MB,
70MB, and 130MB hard disks.
Compaq’s DOS 3.1 disk contains all
the items that are contained in IBM’s
DOS 3.1, plus some extras. One of the
added files is DISKINIT, a utility that
simplifies setting up a hard disk. It
performs the FDISK, ENHDISK, and
FORMAT functions, creates CONFIG.SYS
and AUTOEXEC.BAT files, and copies
both DOS diskettes into a subdireaory
called /DOS. These operations are simi¬
lar to the ones that are performed by
the SELECT command in DOS 3.2.
Other extra programs include
SETCLOCK, which allows users to reset
the date and time without funning the
set-up program; CMPQADAP, a utility
for modifying the keyboard driver for
MARCH 1987
61
AST Modems.
They're Just Your Speed.
AST introduces a new family of standalone
and internal PC modems designed for the
way you work.
Whether you're shopping for a state-of-the-
art, high-speed 19.2K bps modem with error cor¬
rection; a low-cost 1200 bps, Hayes™compatible
modem loaded with features... or, anything in
between... AST has just your speed.
AST's new modem family includes 1200,
2400, 4800 and 19,200 bps modems in both
standalone (synchronous and asynchronous)
and internal PC (asynchronous) models.
Fast and and Reliable.
The AST-2X9600™ standalone and AST-
2X9600™ internal PC modems save thousands
of dollars per year in telephone-line charges
when used for intensive, high-volume file trans¬
fer applications. Fast, 19,200 bps speed is
achieved using the industry standard MNP™
data compression. While data integrity is
assured with MNP error correction.
For less intense applications, the AST-
2X2400™ and AST-2X2400B™ provide data com¬
pression and error correction at speeds up to
4800 bps.
Low-Cost, Hayes-Compatible.
The AST-1200™ and AST-1200B™ provide
reliable, 1200 bps dial-line communications for
a variety of applications, including popular
interactive and bulletin-board services.
Faster, yet price competitive with many 1200
bps modems, are AST's two 2400 bps modems—
AST-2400™ and AST-2400B.™ They're the right
solutions for a mix of interactive applications
and low-volume file transfers.
Ask for AST modems by name. Visit your
local, authorized AST dealer and compare AST
modem prices and features. There's an AST
modem just your speed.
Send today for AST's helpful Modem Selection
Guide. It'll help you select the modem that's
right for your particular application. For your
free copy of this guide send the attached cou¬
pon to AST Research, Inc., 2121 Alton Ave., Irvine,
CA 92714-4992, Attn. M Cor call (714) 863-1480.
ResenncH inc.
^Yes! Send me information on AST Modems today!
| Name_ J
j Title_ j
I Company_ |
| Address_ j
I City/State/Zip_ i
Telephone_ 01PCTE086A01MD ,
1 PCTJ3/87 1
I Send to: AST Research, Inc., 2121 Alton Aw. Irvine. CA 92714-4992. Attn: M C I
AST markets products worldwide-in Europe call: 44 1 568 4350; in the Far East call: 852 0499 9113; in Canada call: 416 826 7514. AST registered and AST-1200. AST 1200B, AST-2400. AST-2400B. AST-2X2400, AST2X2400B. AST-2X9600 and AST-2X9600B trademarks of AST
Research. Inc. MNF trademark of Microcom, Inc. Hayes trademark of Hayes Computer Products. Copyright © 1986 AST Research, Inc. All righLs reserved.
DESKPRO 386
international character sets; KEBDA,
KEYBNO, KEYBSU, and KEYBSV, which
are four additional keyboard drivers;
GRAFTABL, which enables the color/
graphics adapter when operating in
graphics mode to display characters
whose ASCII values are greater than
127; TAPE, a cartridge tape utility that
formats a tape, backs up files to tape,
restores files, lists a tape directory, and
erases tapes; and SETUP, which stores
configuration information in the mem¬
ory of the realtime clock chip.
Software supplied with the Desk-
pro 386 includes ENHDISK.SYS, a driver
that assigns a separate drive letter to
each partition of a hard disk. This is
necessary for using all the storage on
the Deskpro 386s large hard disks, be¬
cause DOS limits partitions to 32MB.
Two CEMM programs (CEMM.EXE and
CEMM.COM) are supplied, as well as
INST386, which generates or modifies
the CONFIG.SYS file in order to iden¬
tify CEMM.EXE and VDISK.SYS as device
drivers and indicate the amount of
memory to be used for expanded mem¬
ory and virtual disks.
Finally, Microsoft provides a diag¬
nostic program called TEST that is the
equivalent of IBM’s standard diagnos¬
tics. Curiously, this program contains a
test for the Microsoft InPort mouse.
Compaq was rumored to be including
an InPort connector on its Enhanced
Graphics Board, but it is not contained
on the released version. Compaq may
have forgotten to remove the diagnostic
test when it decided not to include the
InPort connector.
Compaq continues to score high
marks with its technical documentation.
Included with every Deskpro 386 is a
useful Operations Guide. Users also can
purchase the excellent two-volume
Technical Reference Guide.
The Technical Reference Guide is
one of the finest works of its kind and
an essential purchase for anyone who is
curious about how the Deskpro 386
really works. It is clearly written and
provides enough background material
so that even novices can understand the
complex topics it covers. The explana¬
tion of the 80386’s B1 stepping is espe¬
cially good. Unfortunately, much of the
information that IBM places in its Guide
to Operations manuals is available from
Compaq only in this separately priced
reference. The explanation of switch
settings for the multipurpose disk con¬
troller board is one example.
Compaq produces a single set of
DOS documentation for all Compaq
computers, with special supplements
for the Deskpro 386. While this may be
TABLE 2: Disk Drives Supported
DRIVE
TYPE
NO. OF
CYLINDERS
NO. OF
HEADS
CAPACITY
(MB)
LANDING
ZONE
CYLINDER
PRECOMPEN¬
SATION
CYLINDER
SECTORS/
TRACK
1
306
4
10.65
305
128
17
2
615
4
21.41
638
128
17
3
615
6
32.12
615
128
17
4
1,024
8
71.30
1,023
512
17
5
940
6
49.09
939
512
17
6
697
5
30.33
696
128
17
7
462
8
32.17
511
256
17
8
925
5
40.26
924
128
17
9
900
15
117.50
899
— l a
17
10
980
5
42.65
980
-1
17
11
823
10
71.63
822
-1
17
12
925
9
72.46
924
128
17
13
612
8
42.61
611
256
17
14
754
11
72.19
753
-1
17
15
0
0
0
0
0
0
16
612
4
21.31
612
0
17
17
980
5
42.65
980
128
17
18
966
6
50.45
966
128
17
19
1,023
8
71.23
1,023
-1
17
20
733
5
31.90
732
256
17
21
733
7
44.66
732
256
17
22
768
6
40.11
768
-1
17
23
771
6
20.16
771
-1
17
24
966
14
117.71
966
-1
17
25
966
16
134.53
966
-1
17
26
1,023
14
124.66
1,023
-1
17
27
966
10
84.08
966
-1
17
28
771
3
20.11
771
-1
17
29
578
4
20.09
578
-1
17
30
615
4
31.49
615
128
25
31
615
8
62.98
615
128
25
32
966
3
50.45
966
-1
34
33
966
5
84.08
966
-1
34
34
966
7
117.71
966
-1
34
35
966
8
134.53
966
-1
34
36
966
9
151.35
966
-1
34
37
966
5
84.08
966
-1
34
38
1,023
9
155.56
1,023
-1
33
39
1,023
11
190.13
1,023
-1
33
40
1,023
13
224.70
1,023
-1
33
41
1,023
15
259.27
1,023
-1
33
42
1,023
16
284.93
1,023
-1
34
43
756
4
40.26
756
-1
26
44
756
2
20.13
756
-1
26
45
756
4
40.89
768
-1
26
46
768
2
20.45
768
-1
26
47
966
5
61.82
966
128
25
a The -
1 values mean that no write precompensation is used for the drive.
The Deskpro 386 BIOS supports 47 drive types. These include all the drive types
(with the same type numbers) supported by the IBM AT, plus many more. This
allows a high degree of flexibility in the selection of disk drives.
MARCH 1987
63
B/IRR
•J>uvi0't2r-7na*^tame gomm v mm &x**-
BARR SYSTEMS, INC. □ 2830 NW 41 Street □ Gainesville, FL 32606
904-371-3050 □ 800-BARRSYS □ Telex 6715114 BARR UW
Just insert the 208AB modem card, install
the menu-driven software, and instantly the
PC becomes an RJE workstation. Plug the
cable into the telephone outlet, send a com¬
mand, and receive an immediate response
from the mainframe—invoices, production
reports, laboratory analyses, checks...all done
for you automatically. The BARR/HASP soft¬
ware bypasses the high-overhead TSO and
CMS interactive facilities, and instead uses
the mainstream communications facilities of
the host —MVS/JES, VM/RSCS, CDC/NOS/
RBF— saving time and money.
What’s more, BARR/208AB and BARR/HASP
were designed for beginners and experts alike
with all features quickly accessed through simple
menus. And the PC is always free for data entry and word
processing, even while it’s communicating with the mainframe.
BARR/208AB
Modem Features
•Auto-dial
•Auto-answer
•Advanced digital
signal processing
•Automatic night dialing
•Self-test diagnostics
BARR/HASP
Software Features
•Multiple printer support
up to 600 lines-per-minute
•LAN gateway
•PC to PC file transfer
•Concurrent DOS
•Simultaneous sending and
receiving files
•Bell 208A/B compatible modem
•Emulates IBM 3777-2 and HASP on IBM 360/20
The complete communications package includes
BARR/208AB modem, BARR/HASP software,
manuals, and cable. *2290. Trial evaluation available
Call BARR SYSTEMS today for more information
about how this great combination can help in your
business. 800-BARRSYS
Send Data and Receive
Reports at 4800 bps...
BARR/208AB synchronous modem and
BARR/HASP multi-tasking software for
the IBM PC, XT, AT and compatibles.
CIRCLE NO. 147 ON READER SERVICE CARD
'tymit&flf
DESKPRO 386
convenient for Compaq, it creates a
great deal of confusion for the user.
The DOS 31 documentation and
diskettes form a generic package that is
available with all Compaq computers.
Two other diskettes, the User Prog and
Supplemental User Prog diskettes, con¬
tain additional utilities as well as up¬
dated versions of certain programs and
versions designed especially for the
Deskpro 386. For example, the User
Prog diskette contains a new version of
the TAPE program that must be used in¬
stead of the version on the DOS
diskettes. The Supplemental User Prog
diskette contains versions of VDISK and
the MODE command designed for the
80386 processor. Nowhere does the
DOS manual mention the existence of
these updated programs. Nor does the
DOS manual describe the CEMM pro¬
gram. The Deskpro 386 Operations
Guide mentions the new VDISK, CEMM,
and MODE versions, but not the new
TAPE command. With multiple copies of
programs and utilities, the user can eas¬
ily install the wrong versions. The man¬
uals do nothing to explain the situation
or ease the problem.
Instead of the usual 90-day war¬
ranty, Compaq provides a one-year war¬
ranty for the Deskpro 386, including the
Enhanced Graphics Board and Compaq
Color Monitor. If users experience
problems during that time, they can
return the machine to their dealer for
repairs or replacement.
TEST RUN
The Deskpro 386 was subjected to the
same tests used throughout this series
on AT compatibles, although they were
modified to run on 80386-based com¬
puters. First, commonly used software
and hardware products were installed
to check for compatibility. Then the PC
Tech Journal AT Evaluation Suite of
compatibility and performance tests was
run and the results were compared
with those of the 8-MHz IBM AT. (For
details on how these tests were modi¬
fied, see “Updating the Evaluation
Suite,” Ted Forgeron, Paul Pierce, and
Steven Armbrust, this issue, p. 70).
All of the hardware products tested
with the Deskpro 386 worked without
problem, including an 80287 numeric
coprocessor, an Intel Above Board with
4MB of memory, Microsoft serial and
bus mice, a Hayes Smartmodem 1200,
and the Compaq Enhanced Graphics
Board. One item worth special mention
is that expanded memory on the Above
Board (or on any expanded memory
board) cannot be used when Compaq’s
CEMM driver is installed. The reason
for this is simply because only one ex¬
panded memory driver can be active at
any one time in one computer.
Software installed in the Deskpro
386 included Microsoft Windows 1.01
and Microsoft Word 3.1 to test graphics
capabilities and the mouse; Borland’s
SuperKey 1.11 A, SideKick 1.56A, and
Turbo Lightning 1.101 A to test memory-
resident programs; Living Videotext’s
Ready! 1.00C and Intel’s QUIKMEM2
RAM disk to test expanded memory;
both the IBM and Compaq versions of
VDISK to check the computer’s ability
to switch in and out of protected mode;
Fastback from Fifth Generation Systems
to test direct memory access; and the
IBM Advanced Diagnostics programs to
perform a general check-up.
T he Technical Reference
Guide is an essential pur¬
chase for anyone who is
curious about how the Desk-
pro 386 really works.
Almost all the programs worked
without error. Only SuperKey failed
completely by locking the enhanced
keyboard, but a new version (1.13) re¬
leased specifically to solve this problem
worked as advertised on the Deskpro
386. Fastback performed without errors,
but the restore program required the
processor speed to be set to 8 MHz.
The only other program that showed
a discrepancy was the IBM Advanced
Diagnostics program, which recognized
only 640KB of the Deskpro 386’s first
1MB of RAM. The remaining 360KB is
mapped to addresses that are just below
16MB, where the Diagnostics program
could not find it.
The expanded memory programs
(Ready! and QUIKMEM2) were tested by
running them out of CEMM memory;
both ran without problems.
The IBM VDISK program also
worked as intended. This is significant
because it implies that even though the
80386 can easily switch between pro¬
tected and real modes, the Deskpro 386
also supports the more complicated
method required for the 80286 (which
involves resetting the processor). The
Deskpro 386’s VDISK program is writ¬
ten especially for the 80386 processor
and does not need to reset the proces¬
sor to go back to real mode.
One other program tested on the
Deskpro 386 did not run correctly.
Gold Hill Computers’ Golden Common
LISP (GCLISP) large memory version
2.0, a program that switches in and out
of protected mode to execute code out
of extended memory, caused the com¬
puter to perform a warm reboot. Gold
Hill attributes the problem to the ag¬
gressive, nonstandard way that GCLISP
uses 80286 protected mode. Gold Hill
plans to market a Deskpro 386-compati¬
ble version of GCLISP in 1987.
The PC Tech Journal compatibility
and performance tests consist of five
programs: ATBIOS checks the BIOS and
BIOS data areas; ATKEY checks for key¬
board compatibility; ATFLOAT measures
floating-point operations with the nu¬
meric coprocessor installed; ATDISK
measures hard-disk performance;
ATPERF measures processor and nu¬
meric coprocessor clock rates, as well
as memory access times. Table 3 lists
the results of these tests, and figure 5
presents bar-graph comparisons be¬
tween the 8-MHz AT and Deskpro 386
for RAM instruction fetch, RAM read and
write times, ROM read times, and EMM
read and write times.
ATBIOS showed that the Deskpro
386 uses the BIOS data area in the
same way as the AT. It listed a Compaq
copyright and a date of 8/19/86.
ATKEY verified the keyboard com¬
patibility. The original AT keyboard also
worked with the Deskpro 386.
ATFLOAT showed that the Deskpro
386 can process floating-point opera¬
tions 1.7 times as fast as an 8-MHz AT.
Given that the processor runs at 16
MHz and the numeric coprocessor at 8
MHz (compared to 8 and 5.33 on the
AT), this value seems appropriate.
ATDISK proved that the 40MB
drive in the Deskpro 386 is a high-per¬
formance model consistent with the
requirements of an 80386-based com¬
puter. It showed considerably better ac¬
cess times than the IBM drive, and it is
formatted and works effectively with an
interleave of 2, causing a higher effec¬
tive transfer rate than the IBM drive
(which uses an interleave of 3).
The most interesting results were
obtained from ATPERF, which demon¬
strated that the Deskpro 386 is an ex¬
tremely fast computer, with instruction
fetches, as well as memory reads and
writes, almost three times as fast as an
8-MHz AT. (Because the system nor¬
mally runs at 8 MHz when the diskette
drive is accessed, ATPERF must be run
from the hard disk or SPEED must be
set to HIGH using the MODE command
to achieve these results.)
MARCH 1987
65
DESKPRO 386
The RAM read and write times and
the corresponding wait states show the
values expected from a high-perfor¬
mance, 32-bit processor. ATPERF shows
that reading from and writing to RAM
within a 2KB page indeed occurs at
zero wait states.
The modified version of ATPERF
uses PUSHA instructions to measure
RAM writes. These are fast instructions
that do not result in idle bus cycles.
Each PUSHA instruction involves eight
PUSH instructions (pushing all of the
registers), and therefore it writes to
eight consecutive memory locations that
are almost always within the same 2KB
page. Memory is accessed outside the
page when the processor fetches a new
instruction. However, each PUSHA is a
byte instruction, so each instruction
fetch during this test fetches four sepa¬
rate PUSHA instructions (the 80386 ac¬
cesses four bytes at a time). As a result,
each instruction fetch results in 32
memory accesses (eight pushes from
each of four PUSHA instructions). With
this mechanism, the effect of accessing
memory outside of a page during in¬
struction fetch is barely noticeable and
is not enough to affect the number of
wait states measured.
The ROM read times are also
worth discussing. ATPERF checks the
ROM read time by using MOVS instruc¬
tions to copy the system BIOS to RAM.
However, in the Deskpro 386 the sys¬
tem BIOS reads are actually performed
from RAM instead of ROM. Therefore,
the ROM read times are, in fact, equal
to the RAM read times as indicated in
table 3, with the actual performance de¬
pendent upon the extent to which suc¬
cessive memory accesses occur within
the same 2KB page.
The ROM read test is a general-
purpose test that is not customized for
the Deskpro 386. It subtracts the aver¬
age RAM write time that was discussed
previously from the average time re¬
quired to copy ROM to RAM in order to
determine the average ROM read time.
In the case of the Deskpro 386, the av¬
erage RAM write time is measured at
zero wait states, whereas the RAM
writes in the ROM copy operation occur
at two wait states (because the MOVS
source and destination addresses are
not in the same 2KB page.) Therefore,
subtracting the zero-wait-state average
write time yields an inaccurate value for
average ROM read time.
The value that is displayed (0.39
microseconds) is quite useful, however,
for determining the average time
needed for RAM read/write accesses that
are not contained within the same 2KB
TABLE 3: Compatibility and Performance Tests
8-MHz AT,
30MB DISK"
DESKPRO 386,
40MB DISK
ATBIOS
ROM BIOS date
11/15/85
08/19/86
ATPERF
Average RAM instruction fetch (|xs)
BYTE
.250
.19 (130)o
WORD
.403
.14 (280)
DWORD
N/A
.23
Average RAM read time (|xs) c
BYTE
.401
.13/.26 (298/154)
WORD
.401
.13/.26 (298/154)
DWORD
N/A
.14/.26
Average RAM write time (|xs) c
BYTE
.401
.13/ 26 (307/154)
WORD
.401
.13/ 26 (307/154)
DWORD
N/A
.13/26
Average ROM read time (|xs)
BYTE
.401
Same as RAM read
WORD
.401
Same as RAM read
DWORD
N/A
Same as RAM read
Average CGA video write time (|xs)
BYTE
1.208
1.21 (100)
WORD
2.415
2.42 (100)
DWORD
N/A
4.83
Average EMM read time (pts)
BYTE
.402
.13 (301)-*
WORD
.402
.13 (301V
DWORD
N/A
.14
Average EMM write time (|xs)
BYTE
.402
.13 (306)
WORD
.402
.13 (306)
DWORD
N/A
.13
CPU clock rate (MHz)
8.0
16.0 (200)
Numeric coprocessor clock rate (MHz)
3.3
8.0 (150)
Refresh overhead (%)
7.1
15
RAM read/write wait states
1/1
0/0
ROM read wait states
1
2
Video write wait states (CGA)
8
17
EMM read/write wait states
1/1
0/1 d
ATFLOAT
Performance as percentage relative to AT
100
107
ATDISK
Sectors/track
17
17
Heads
5
3
Cylinders
731
978
Total space (million bytes)
31.81
42.56
Track-track seek time (ms)
6.0
4.1
Average seek time (ms)
37.1
27.6
Effective transfer rate (KB/sec)
170.1
254.5
DOS file I/O (sec)
7.3
7.4
Interleave
3
2
a The figures for the IBM AT are the average results from several machines, whereas the results from
the Compaq Deskpro 386 are taken only from the review sample model.
b Figures shoivn in parentheses represent the relative performance expressed as a percentage compared
to PC Tech Journal’s baseline machine, the 8-MHz, 30MB AT.
c For the Deskpro 386, first number is for memory access within the same 2KB page; the second is not
within the same 2KB page.
d EMM measurements were taken using the Deskpro 386’s CEMM driver and built-in memory.
RAM read/write times are from 1.5 to 3 times faster that for the AT, depending on
whether or not successive accesses are written to the same 2KB page.
66
PC TECH JOURNAL
The Deskpro 386 can access a 3 2-bit double word faster than the AT can perform
even one of the two 16-bit word accesses that it uses to perform the same task.
page. This value is determined by ad¬
ding the previously subtracted average
RAM write time to the average ROM
read time displayed by ATPERF and
then dividing that total by two (because
the RAM reads and writes take the same
amount of time). The resultant 0.26 mi¬
croseconds per double word is the ex¬
pected average time for a two-wait-state
RAM read/write.
FASTEST ON MARKET
For anyone who demands high perfor¬
mance and AT compatibility, the Com¬
paq Deskpro 386 is definitely the com¬
puter of choice. At the time this review
was written, it was easily the fastest AT
compatible on the market, as well as
one of the most compatible. The addi¬
tion of Compaq’s special touches, such
as processor speed control, CEMM, and
excellent documentation, make this
computer even more desirable. Perhaps
its best and brightest feature is its
80386, which offers a bridge between
today’s real-mode applications and to¬
morrow’s more powerful multitasking
and protected mode programs.
Only a few areas need improve¬
ment in the Deskpro 386. The absence
of a socket for the 80387 numeric co¬
processor will keep this machine’s float¬
ing-point performance less than that
provided by other new 80386-based ma¬
chines that do support the 80387. Even
other computers that contain 10-MHz
80287s will be able to edge the Desk-
pro 386’s 4- and 8-MHz 80287 in float¬
ing-point performance. Other areas of
concern are the tape backup drive, be¬
cause one of the units examined did
not work properly, and the Compaq
Color Monitor, because it does not
match the quality of some of the other
enhanced color monitors that are cur¬
rently on the market.
These are problems, however, that
can be remedied, and they are far out¬
weighed by the outstanding perfor¬
mance and quality of the Deskpro 386.
Even IBM will have a hard time topping
this machine. 1'"mK1
Compaq Computer Corp.
2033 FM 149
Houston, TX 77070
713/370-0670
Deskpro 386
CIRCLE 342 ON READER SERVICE CARD
Steven Armbrust is a freelance technical
writer, and Ted Forgeron is software project
manager for Intel Scientific Computers.
Together, they are the authors of the Pro¬
grammer’s Reference Manual for IBM Per¬
sonal Computers (Dow-Jones Irwin, 1986).
MARCH 1987
67
BetterBASIC Application Development System $199.00
The BetterBASIC Application Development System provides very close compatibility with PC-BASICA
and GW-BASIC, yet provides numerous new and sophisticated language features such as: program
Block Structures, recursive Procedures and Functions with local variables, structures, Records and
Pointers and last but not least support of large memory.
Virtual Memory Manager $99.00
The Virtual Memory Manager expands Better-
BASIC’s data space into the giga-byte range and
finally breaks the 640k byte barrier for array sizes. Not only
can you directly address all expanded memory supported
by LIM/EMS memory boards, you can also address any
RAM Disk, Hard Disk or even a Floppy Disk as if they were
ordinary RAM.
i Btrieve™ Interface $99.00
| This is a high level BetterBASIC interface to the
ever popular Btrieve™ file manager from Soft-
Craft. Instead of Assembly language calls this module
provides high level BetterBASIC program access to all
Btrieve™ functions. Use it to design your own database
application in BetterBASIC.
Virtual Memory Manager-
Network Version
$250.00
| This version of the Virtual Memory Manager allows
Virtual Memory to be distributed throughout a Local Area
Network. It also provides File, Records and Field Locking
to control access to shared data
i C-Link $99.00
J This software package allows BetterBASIC to
I access C-language library functions from within
BetterBASIC. Currently supported are Lattice and
Microsoft C.
■ 8087/80287 Math Module $99.00
This module allows you to use the 8087 or 80287
co-processor to significantly accelerate programs
which are floating point calculation intensive.
Decimal Math Module $99.00
If you are a business programmer, you are
probably frustrated by the many roundoff
problems caused by ordinary IEEE format floating point
numerical operations. The BetterBASIC Decimal Math
Module which offers variable precision from 6 to 24 digits,
drastically reduces roundoff problems in business
applications.
1 Screen Design System $199.00
S This package truly takes the drudgery out of
I creating display screens and data entry screens.
An interactive Screen Editor lets you “paint” your display
screens exactly as you want them to appear in your pro¬
gram. The completed screens take the form of disk resident
images. A run time library module provides many new
BetterBASIC procedures and functions for interacting with
the display screens to simplify the use of pop-up menus
and data entry screens.
BetterTools™ $99.00
| This is a collection of more than 150 useful
extensions to BetterBASIC such as time and date
computations, encryption and decryption, low level file
directory access, hyperbolic function and much more. No
BetterBASIC programmer should be without BetterTools™.
CIRCLE NO. 195 ON READER SERVICE CARD
BetterBASIC is GW-BASIC and PC-BASICA compatible; runs on IBM PC and compatibles.
HARDWARE REQUIREMENTS ADDITIONAL BetterBASIC STATEMENTS
CPU: IBM PC, IBM PC XT AT, COMPAQ, IBM PC Compatibles ANY ARC END, MAKE
Memory: 256KB min up to 640KB APPEND PROCEDURE PROGRAM
Display: Monochrome or Color ASH ENDPROC MAX
Disk Drive: One 5V4" floppy, single or double sided ASSIGN ERRORMODE MAXS
Operating Systems: MS-DOS 2.0,2.1,3.0,3.1 AUTODEF EXIT MEM
EXIT GOSUB MIN
EXIT X LEVELS MINS
EXTERNAL MODULES-
FRAME OFFSET
FRAME ON INTERRUPT
WINDOW PRECISION-
FREEDISK PRINT TO
GOTO END PRINT TO
HEADER USING
INPUT FROM PROCEDURE
INS$ PROCS-
INTEGER PUBLIC
INTEGER ARC READ RECORD
INTEGER READCHR
ARRAY READCHR
INTEGER FROM
ARRAY ARC READLINE
INTEGER READLINE
ARRAY PTR FROM
IN ARRAYSTRUC READ RECORD
INTEGER REAL
FUNCTION REAL ARC
INTEGER PTR REAL ARRAY
INTERRUPT REALARRAY
INTERRUPT ARG
CLEAR REAL ARRAY
INTERRUPT STRUC
ON/OFF REAL
INTERRUPT FUNCTION
PROC REAL PTR
INTERRUPT RENAME
RESTORE REPEAT
IN savf UPT Restart
" RESTORE PAR
* RESTORE
KEY= SCREEN
KEYWORD ARG RESULT=
KEYWORD SET RETRY
LIST ALL ROT
MAIN SAVE MODULE
SAVE PAR
SAVE SCREEN
SCOPE=
SCRATCH
SEG
SELECT
SET
SET CURSOR
SH
SHELL
SIZE
SIZE$ =
SPAN
STACK=
STATUS^
STATUSLINE
STRING
STRING ARG
STRING ARRAY
STRING ARRAY
ARG
STRING ARRAY
PTR
STRING ARRAY
STRUC
STRING
FUNCTION
STRING PTR
STRUCTURE
SYSCALL
SYSCODE
SYSFLAGS
TYPE
UPPERS
WHILE. . .DO
WINDOW
WOR
WRITE RECORD
WRITE TO
XMEM
XMEM=
XREF
DATA TYPES:
Numeric Data:
BYTE, range: 0 to +255
INTEGER, range: - 32768 to + 32767
REAL, range: Single Precision 8.43xl0' 37 to 3.37xl0 38
Double precision 4.19xl0 307 to 1.67xl0 308
Binary Math, Single/Double/Mixed Precision
Mixed mode numeric expressions will always be REAL.
String data:
Variable from 0 to 32767 characters in size.
Record Variables:
Allows grouping of dissimilar data types into a single logi¬
cal variable. Elements of a RECORD are addressed
as FIELDS and can be of any type, including ARRAY,
RECORD and POINTER.
Array Variables:
N-dimensional arrays of any type, including ARRAY,
RECORD and POINTER. Dynamic arrays like PC-BASICA
Pointer Variables:
Allows indirect reference to any data type. Can be used
with RECORD variable to create linked lists, or to create
relational data structures.
In addition supports PC-BASICA record types.
BetterBASIC BENCHMARK COMPARISON
in milliseconds
Better BASIC IBM
INTERPRETIVE COMPILED
REAL FOR/NEXT
ASSIGNMENT
Multiply
Microsoft Statements Not Supported
DEF USR MOTOR PEN STRIG
MERGE ON PEN STICK USR
ON STRIG
Call our Toll Free Order Line
DIVISION
logarithm
Exponential
COSINE
TANgent
SQR (SQUARE ROOT)
Summit Software Technology, Inc. ™
106 Access Road
Norwood, MA 02062
SP = Single Precision
DP = Double Precision
(617) 769-7966
BetterBASIC is also available from TANDY/RADIO SHACK Computer Centers. Ask your dealer for
Express Order Software #90-0315 for BetterBASIC, and #90-0303 for Runtime System.
BetterBASIC is a registered trademark of Summit Software Technology, Inc. IBM PC, XT, AT, are registered trademarks of International Business Machines Corp. Tindy is a registered
trademark of T^ndy Corp. Lotus™ and 1-2-3™ are registered trademarks of the Lotus Development Corp. Intel © Intel Corp. HALO © Media Cybernetics, Inc. CSS © Graphic Software
Systems, Inc. Lattice C is a registered trademark of Lattice, Inc. Btrieve is a registered trademark of SoftCraft Inc.
wmm
■mmm.
; V < V;;v
As the state of the art
progresses, so must our
testing procedures. PC Tech
Journal's compatibility
and performance metrics
have been expanded to
include other processors.
TED FORGERON, PAUL PIERCE, and STEVEN ARMBRUST
F or several months, PC Tech Jour¬
nal has been reviewing 80286-
based computers, examining
whether or not they are compatible
with the IBM PC/AT and how they per¬
form compared to the 8-MHz AT, as
well as the characteristics that make
these computers unique. An integral
part of these reviews has been a group
of programs referred to as the AT Eval¬
uation Suite. These programs were in¬
troduced in the article “Out from the
Shadow of IBM..., (Steven Armbrust,
Ted Forgeron, and Paul Pierce, August
1986, p. 52), which described the tests
and listed their source code.
Now that Compaq has introduced
an AT compatible based on Intel’s new
high-performance 80386, the tests had
to be revised in order to measure the
performance of 386-based machines.
REVISED TESTS
The compatibility tests consist of five
separate programs. ATBIOS examines
the computer’s BIOS. ATKEY tests
keyboard compatibility and program¬
mability. ATPERF measures processor
and memory performance. ATELOAT
measures the performance of floating¬
point operations. ATDISK measures
hard-disk performance.
Because these programs were ori¬
ginally designed to test AT-compatible
computers, they assumed that each
computer contained an 80286 micro-
PHOTOGRAPH • MARC DAVID COHEN
UPDATE
processor. In particular, ATPERF calcu¬
lated many of its results by assuming
the number of clock cycles required for
particular instructions. Because this
number can vary from processor to
processor, ATPERF gave valid results
only when the computer on which it
ran contained an 80286. Revised listings
for ATPERF are included in this article.
Small changes also have been made to
the other programs to correct minor
problems, but only the affected sections
of code are given here. Complete list¬
ings for all the programs are available
on PCTECHline.
ATBIOS. ATBIOS has been updated to
version 1.01 by correcting the problems
that were previously reported in the
Letters column (“The Shadow of a
Doubt,” December 1986, p. 16). Three
changes have been made.
First, when control characters ap¬
peared in the range of memory that
ATBIOS checked for copyright mes¬
sages, the program sometimes printed
random characters to the screen instead
of the copyright statement. Version 1.01
filters out control characters by display¬
ing them as periods, much as DEBUG
handles nonprinting characters. The fix
involves removing the following lines:
write (’Copyright Statement is *);
window (40,6,80,7);
gotoxy (1,1);
write (copyright);
window (1,1,80,25);
gotoxy (1,8);
and replacing them with these lines:
write (’Copyright Statement is ’);
write (’ ’);
FOR i: = 1 TO 80 DO
BEGIN
IF (copyright [i2H < * ’)
OR (copyright2Gi2H > ’"’) THEN
write (’.’)
ELSE
write (copyrightji]);
IF i = 40 THEN
BEGIN
writeln;
write (’ *);
write (’ ’);
END;
END;
writeln;
The second problem involved
ATBIOS’s inability to recognize the IBM
game adapter, which the AT does not
support. Because the AT never sets the
game adapter bit in the equipment flag,
ATBIOS was fooled into thinking the
game adapter was not present, even
when it was installed. The new version
now checks that bit only for non-AT ma¬
chines. The change involves removing
the following lines:
write (’Game Adapter Present’);
write (* ’);
if (equip_flag and game_mask) <> 0
then writeln (YES’)
else writeln (’NO’);
and replacing them with these:
IF machine_id <> at_id THEN.
BEGIN
write (’Game Adapter Present’) ;
write (’ ’);
IF (equipJflag AND game_mask)
< > 0 THEN writeln (TES’)
ELSE
writeln (’NO’);
END;
Finally, ATBIOS was changed to
support I/O redirection so that a user
can redirect the output to a file or
printer. This change involves adding the
following line:
{$P512}
anywhere before the first line of source
code in ATBIOS.PAS.
ATKEY. ATKEY has not changed since it
was introduced. This test works only
with AT-compatible keyboards, not PC
or XT keyboards. This is now the only
one of the compatibility and perfor¬
mance tests that is specific to the AT.
ATPERF. Instead of a separate program
that works only on 80386 machines, the
new version of ATPERF is designed to
run on a number of Intel processors. In
fact, it can run on the 8088, 8086,
80286, and 80386, and it displays the
type of processor contained in the com¬
puter. Changes also have been made to
support zero-wait-state memory, such as
that contained in IBM’s XT-286. Like the
original program, the new version is
written in Microsoft C (ATPERF.C) with
a MASM assembly language subroutine
(TIMEASM). Listings 1 and 2 contain
the new source code for these routines.
In order to support several proces¬
sors, ATPERF had to be modified so that
it could detect the specific type of pro¬
cessor that is contained in the comput¬
er. The procedure called __CPU_TYPE
that is in the TIMEASM program per¬
forms part of this operation. The tech¬
nique that is used in _CPU__TYPE is an
Intel-approved method that is listed in
the Technical Reference Guide for Com¬
paq’s Deskpro 386.
Compaq’s procedure tests for the
8086/88, 80286, and 80386. It relies on
the behavior of the FLAGS register in
real mode, which differs among the
processor types. The most significant bit
of the FLAGS register (bit 15) distin¬
guishes the 8086/88 from the other two
types. In the 8086/88, bit 15 is always
set to 1, whereas in the 80286 and
80386, its value is 0. Bits 12 through 14
are used to distinguish the 80286 from
the 80386. In the 80286, these bits are
always 0; however, the 80386 allows
these bits to be set.
Armed with information about the
Intel processor family, ATPERF invokes
a procedure that is geared specifically
toward that particular processor. Each
of these procedures uses information
about that processor (such as the num¬
ber of processor cycles required to exe¬
cute a particular instruction) when cal¬
culating the results of its tests. The pro¬
cedure measure88 tests the perfor¬
mance of computers that contain either
the 8086 or 8088. The procedures
measure286 and measure386 are called
when the computer contains the 80286
or 80386, respectively.
When measure88 runs, the results
are used to distinguish between the 8-
and 16-bit members of the family (be¬
tween the 8088 and 8086). It does this
by comparing the speed of two instruc¬
tions: clear carry flag (CLC) and decimal
adjust register AL after addition (DAA).
CLC is a very fast, single-byte instruc¬
tion, the speed of which is limited by
the instruction fetch time. On an 8-bit
computer, the execution speed of CLC
is equal to the instruction fetch time.
However, on 16-bit computers, CLC ex¬
ecutes faster because instructions are
fetched two at a time. DAA is a single¬
byte instruction that takes four CPU
clock cycles to execute, about the same
as an instruction fetch. Therefore, even
though 16-bit computers can fetch two
instructions at once, only one can be
executed in that time. If the measure¬
ments for CLC and DAA are approxi¬
mately equal, then the computer is of
the 8-bit variety. If the CLC instruction
takes less time, then the test is running
on a 16-bit computer.
The measure88 procedure per¬
forms a subset of the measurements
performed by the 80286 and 80386 ver¬
sions. It measures only the processor
and numeric coprocessor speeds and
the time for an instruction fetch (both
byte and word). It performs these tests
in the same way that the original ver¬
sion did. Processor speed is measured
by executing a series of MUL instruc¬
tions, each of which takes much longer
than the number of cycles needed to fill
the prefetch queue. Byte and word in¬
struction fetches are measured by exe¬
cuting a series of CLC (byte) and MOV
(word) instructions. These instructions
take less time to execute than to fetch,
72
PC TECH JOURNAL
so this part of the test measures just the
instruction fetching.
Measurements for memory read
and write operations are not included
in the mea$ure88 procedure. These op¬
erations cannot be measured accurately
in the 8086 and 8088 processors be¬
cause none of the memory reference
instructions executes in less time than
an instruction fetch.
The measure286 and measure386
procedures perform almost identical
operations. The measurements they take
are the same ones taken by the original
ATPERF, with the addition of byte in¬
struction fetches in both procedures
and the 32-bit memory accesses that are
included in measure386. The two pro¬
cedures differ only in the assumptions
each makes about the number of clock
cycles that are required to execute cer¬
tain instructions.
The mechanism that measure286
and measure386 use for measuring
read and write times is slightly different
than the method used in the earlier ver¬
sion of ATPERF. Previously, STO instruc¬
tions were used to measure memory
writes, and that value was then sub¬
tracted from a MOVS measurement
(which includes both reading arid writ¬
ing) to obtain the value for memory
read. The new version measures mem¬
ory write with PUSHA instructions,
which are much faster and can be used
to test zero-wait-state memory. This
change was made to handle the faster
memory used in many of the new com¬
puters. STO instructions were limited to
measuring one-wait-state memory or
slower. With zero-wait-state memory,
the STO instructions actually execute
more slowly than their corresponding
memory access, thereby invalidating the
measurement that is obtained.
The Microsoft C compiler and
Macro Assembler are used to produce
the object code of the ATPERF program.
Given that ATPERF.C contains the C
source code and TIMEASM contains the
assembly language source code, the fol¬
lowing commands are used to compile
and link the program:
msc atperfc,;
masm time.asm/r„;
link atperf+time/map/stack:4000,„;
The /r option on the masm com¬
mand directs the assembler to generate
floating-point instructions that can be
executed on the numeric coprocessor.
The /stack:4000 option of the link com¬
mand directs the linker to assign a stack
of 4,000 bytes to the program. This op¬
tion, along with the large stack it gener¬
ates, is essential for running the new
version of ATPERF. Because a series of
PUSHA instructions is used to. measure
memory write operations, a large stack
is necessary to contain the pushed
values. The other option on the link
command, /map, is not necessary for
proper program execution; however, it
does provide a link map that is quite
helpful for debugging.
ATFLOAT. The ATFLOAT test has been
updated to version 1.02 by correcting
two lines of the program, both of which
deal with displaying random characters
to the screen. In the previous version of
ATFLOAT, the time function, which
always requires a pointer to a return
value, used an uninitialized value for its
return pointer. This sometimes caused
random characters to appear. Version
1.02 replaces the line:
start = time();
with the line:
start = time(NULL);
and also replaces the line:
total =' time() - start;
with:
total = time(NULL) - start;
ATDISK. ATDISK seemed to work fine
when it was compiled under Microsoft
C version 3.0. However, version 4.0 of
the C compiler reported compile er¬
rors, because the program used struc¬
tures when it should have used unions.
The latest version of ATDISK (1.01) cor¬
rects the problem by replacing six in¬
stances of the line:
struct REGS regs;
with the line:
union REGS regs;
The updated compatibility and per¬
formance tests have performed their
first job on the Compaq Deskpro 386,
reviewed in this issue on p. 48. Because
of the changes made to ATPERF, the
program was able to identify the pro¬
cessor in the Deskpro and perform tests
suitable for the 386. 1 "ilmTim ^1
Ted Forgeron, software project manager for
Intel Scientific Computers, and Steven Arm-
brust, a technical writer, have reviewed sever¬
al AT compatibles for PC Tech Journal. With
Paul Pierce, a software consultant, they de¬
vised the original AT Evaluation Suite.
LISTING 1: ATPERF.C
/* ATPERF -- PC Tech Journal AT Hardware Performance Test
* Version 2.00 Originally written 05/17/86
* Last modified 12/18/86
* Changes: 1. First release (1.00).
* 2. Correct to work with zero-wait state memory (1.01).
* 3. Detects an unsupported processor (1.01).
* 4. Change to support 8088, 8086, 80188, 80186'and 80386 (2.00).
■ *- Copyright (c) 1986, 1987, Ziff Communications Company
* Program by: Ted Forgeron, Paul Pierce
* Measures clock rates and memory speeds
* of PC and AT compatible computers. */
■ V- ■: p ' -
:-C
1
unsigned multimeO* * ' Jf
unsigned be let tmeOjr •* -
#define IRB
o
/* Instruction fetch, byte
x\,-> *f '
extern
idTOdd-
#define IRW
i
/* Instruction fetch, word
*/;...
extern
unsigned wmovtimeC);
#define IRX
2
/* Instruction fetch, slow byte */
extern
unsigned dmovtimeO;
#define MRB
3
/* RAM read byte
*/
extern
unsigned bdaatimeO;.
^define MUB
4
/* RAM write byte
*/
extern
unsigned bmvstimeO;
^define RRB
/♦ ROM read byte
*/
extern
unsigned wmvstimeO? T*. *
| d : v
i,:, f '
#define ERB
/* EMM read byte.
♦/
extern
unsigned dpiystimeO; i
#define EWB
7 ^
/* EMM write byte
■ m*/ - ;
extern
unsigned bromtimeO;
#define VWB
8
/* Video write byte
*/
extern
unsigned wromtimeO;
^define MRW
9
/* RAM read word
*/
extern
unsigned dromtimeO;
#define MWW
10
/* RAM write word
*/
extern
unsigned wpshtimeO;
#define RRW
11
/* ROM read word
♦/
: extern
unsigned dpshtimeO;
#define ERU
12
/* EMM read word
*/
extern
unsigned bemmtimeO;
#define EWW
13
/* WMM write word
extern
unsigned wemp|ime(); P :
^define VWW^ 14
#deffne
#defihe MRD ' 16
#define MUD 17
#define RRD 18
^define ERD 19
#define EW* |!|20 |
^define WD. . 21
#define VARS88 3
#define VARS286 15
#define VARS386 22
/* Measurement procedures */
/♦Video write "word
/♦ Instruction fetch, dword s */ > _ I
/♦ RAM read dword
/* RAM write dword
/* ROM read dword
/* EMM read dword
/.* EMM ?wr.i te dword
/* Video write dword
*T
*/
*/
; */' ?
’ */•
37
sa:m
MARCH 1987
73
Wfe’ve taken the work
out of doing Windows.
Microsoft® Windows is becoming the most
popular operating environment for PC systems.
Its not surprising. Windows provides the
foundation for an exciting new generation of
applications that users are demanding. In addi¬
tion, Windows handles many of the details
involved in a software project allowing you to
spend more time enhancing your application.
That’s why a growing number of corporate and
independent software developers are building
Windows applications.
The Microsoft Windows Software Develop¬
ment Kit is your key to this extraordinary new
environment. It’s packed with full reference
documentation, libraries, utilities and sample
programs. Together with our C Compiler or
Macro Assembler, it’s a comprehensive package
that lets you make the most of your application.
Software with a new view.
- Giving your applications the Windows
treatment begins with a new look. The rich
graphical environment allows you to rethink how
you want your program to be presented on screen.
It lets you mix text and graphics. You can incor¬
porate multiple fonts in a variety of sizes, faces and
styles. And it provides the basic building blocks
that make it easy to create drop-down menus,
dialog boxes, scroll bars, icons and more.
These features not only simplify your applica¬
tion design, but also provide the familiar interface
that makes your software easier to learn and use.
Easing the data shuffle.
Of course, there’s more to Windows than
just looks. Now, different applications can work
together. In concert.
The Windows Clipboard provides support
for users to cut and paste information between
your applications and others. Or you can use
messages to establish “hot links” to transfer
data automatically.
Upgrading made easy.
Windows’device independent design allows
you to build your application today and take
advantage of new technology as it becomes avail¬
able. When new graphics cards, printers and
pointing devices appear they can be used with
your software, without modifying your code.
Simply by installing the new driver.
Your window of opportunity.
The Microsoft Windows Software Develop¬
ment Kit is your fastest route to better applica¬
tions. And with it, we also offer DIAL, our on-line
technical support service to help you with the
tough questions, and development courses that
cover everything from using the dialog editor
to memory management.
Find out how you can get your Microsoft
Windows Software Development Kit. Pick up the
phone and call (800) 426-9400. In Washington
State and Alaska, call (206) 882-8088. In Canada,
call (416) 673-7638. And we’ll open the door
to Windows.
The Microsoft Windows
Software Development Kit includes:
♦Dialog editor.
♦Icon editor.
♦Font editor.
♦Resource compiler.
♦ Linker.
♦MAKE (program maintenance utility).
♦ Symbolic debugger.
♦ Heap analysis utility.
♦Sample programs.
♦Windows libraries.
♦ Programmers reference.
♦Programmers utility guide.
System requirements:
♦ 512K memory, DOS 2.0 or higher.
♦Two double sided disk drives*
♦ Graphics adapter card.
*hard disk recommended
MicrosoffWindows Software Development Kit
The High Performance Software.
Microsoft is a registered trademark of Microsoft Corporation.
UPDATE
extern unsigned demptimeO;
measure286();
extern unsigned wenmtimeO;
break;
extern unsigned demmtimeO;
case 3:
extern unsigned bvidtimeO;
accessclks = 2;
extern unsigned wvidtimeO;
measure386();
extern unsigned dvidtimeO;
break;
extern unsigned fptimeO;
default:
/* Timer rate in MHz */
printf("\nThis version of ATPERF is for ");
#define TIMER2_RATE 1.193180
print f("8088/86/188/186/286/386");
/* Number of processor clocks in a multiply instruction */
printf("-based machines only.\n");
#define MULCLKS88 118
exit(1);
#define MULCLKS286 21
>
^define MULCLKS386 25
/* Release EMM memory page. */
/* Overhead in the multiply test V
if (emmok)
#define MUL0VH88 ( 31 + 22*count/100 )
finish_emm();
#define MULOVH286 ( 15 + 14*count/100 )
/* Display the basic measurement results and performance index
#define MUL0VH386 ( 15 + 14*count/100 )
* relative to a 8 MHz AT. */
/* Overhead in the mov instruction test */
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
#define M0V0VH88 ( elktime * (31 + 22*count/100) )
printf("ATPERF -• PC Tech Journal AT Hardware ");
#define MOVOVH286 ( elktime * (15 + 14*count/100) )
printfC'Performance Test\n");
^define M0V0VH386 ( elktime * (15 + 14*count/100) )
printf("Version 2.00, Copyright (c) 1986, 1987, Ziff ");
/* Overhead in pusha instruction test */
printf("Communications Co.\n");
#define WPOVH ( elktime * (15 + 9*count/200) )
printf("Written by Ted Forgeron and Paul Pierce\n");
#define DPOVH ( elktime * (15 + 9*count/200) )
printf("IBM PC/AT model 339 (8 MHz) = 1.00 for relative ");
/* Nunber of numeric processor clocks in a FP divide */
pr int f("measurements.\n");
#define FPCLKS88 197
if (epu < 2)
tfdefine FPCLKS286 203
printf("\n");
#define FPCLKS386 200
printf(" ");
/* Processor overhead in the FP divide test */
printf(" Byte Word ");
^define FP0VH88 ( elktime * 2 * FPCOUNT )
if (epu > 2)
#define FPOVH286 ( elktime * 9 * FPCOUNT )
printfC'Dword ");
#define FP0VH386 ( elktime * 9 * FPCOUNT )
printf("Relative\n");
/* Count for most tests */
printf("Average instruction fetch:");
#define COUNT 1000
printf("%#10.2g uS", acctime[IRB]);
/* Count for the f. p. divide test */
printf("%#10.2g uS", acctimetIRW]);
#define FPCOUNT 100
if (epu > 2)
/* Number of trials for each test */
printf("%#10.2g uS", acctime[IRD]);
#define TRIALS 100
print f("%#10.2g\n", 0.403/acctime[IRW));
/* Variables which hold constants selected by epu type */
if (epu < 2) <
int access_clks;
printf("\n");
int epu; /* CPU type: 0=86/88,1=80186,2=80286,3=80386 *./
) else C
double elkrate; /* Processor clock rate, MHz */
printf("Average RAM read time: ");
double elktime; /* Processor clock period, usee */
printf(»%#10.2g uS", acctime[MRB]);
double fprate; /* FP processor clock rate, MHz */
printf("%#10.2g uS", acctimeCMRW]);
double fpacc; /* FP processor clock period accumulator */
if (epu > 2)
int emmok; /* Set if extended memory is present */
printf("%#10.2g uS", acctime[MRD]);
int ndpok; /* Set if math coprocessor is present */
printf("%#10.2g\n", 0.401/acctime[MRW]);
int six; /* Set if epu is 8086 or 80186 */
printf("Average RAM write time: ");
double raw; /* Variable for raw data */
printf("%#10.2g uS", acctimetMWB]);
double acctime[VARS386]; /* Accumulators for speeds */
printf("%#10.2g uS", acctimeCMWW]);
int count; /* Number of ops per trial */
if (epu > 2)
int trials; /* Number of repetitions */
printf("%#10.2g uS", acctimetMWD]);
/* Main program. */
printf("%#10.2g\n", 0.401/acctime[MWW]);
main(argc, argv)
if (emmok) {
int arge;
printfC'Average EMM read time: ");
char **argv;
printf("%#10.2g uS", acctimetERB]);
printf("%#10.2g uS", acctimelERW]);
register int i;
if (epu > 2)
count = COUNT;
printf("%#10.2g uS", acctime[ERD]);
trials = TRIALS;
printf("%#10.2g\n", 0.402/acctime[ERW]);
/* Determine whether there a math coprocessor in the system. */
printfC'Average EMM write time: ");
ndpok = ndp_present();
printf("%#10.2g uS", acctimetEWB]);
/* Determine whether there is extended memory in the system and
printf("%#10.2g uS", acctimeCEWW]);
* allocate a piece of it for testing. */
if (epu > 2)
emmok = (setup_emm() == 0);
printf("%#10.2g uS", acctime[EWD]);
/* Detect the type of video card and save the information for the
printf("%#10.2g\n", 0.402/acctime[EWW]);
* video measurements. */
>
setup_video();
printfC'Average ROM read time: ");
/* Find out the CPU type and set parameters accordingly. */
printf("%#10.2g uS", acctimeCRRB]);
epu = cpu_type();
printf("%#10.2g uS", acctimetRRW]);
six = 0;
if (epu > 2)
switch (epu) {
printf("%#10.2g uS", acctimetRRD]);
case 0:
printf("%#10.2g\n", 0.401/acctime[RRW]);
case 1:
printfC'Average Video write time: ");
access_clks = 4;
printf("%#10.2g uS", acctimeCVWB]);
measure88();
printf("%#10.2g uS", acctime[VWW]);
break;
if (epu > 2)
case 2:
printf("%#10.2g uS", acctime[VWD]);
access_clks = 2;
printf("%#10.2g\n", 2.415/acctimeCVWW]);
MARCH 1987
75
UPDATE
switch (cpu) <
printfC 8086"),
printfC 8088");
break;
printfC 80186")
printfC 80188"),
break;
printf("80286")
break;
case 3:
printf("80386"),
break;
printfC CPU clock rate: ");
printf1g MHz", clkrate);
printfC Relative: m.2g\n", clkrate/8.0);
if (ndpok) i
printf("Math Coprocessor clock rate: ");
printf(«%#4.1g MHz", fprate);
printfC Relative: %#4.2g\n", fprate/5.33)
/* Calculate refresh overhead from instruction fetch time by assuming
* that each fetch takes an exact multiple of the clock period. The
* difference between average time and the time for an individual *
* fetch is due to memory refresh cycles. */
raw = acctimellRW] / elktime;
printf("Refresh overhead: %#2.1g%%\n",
( (raw - (int)raw) / (int)raw ) * 100);
/♦ Print information about memory based on the speed measurements. */
printf("\nMemory ");
printfC Access width Wait states\n");
if (cpu < 2) C
if (six)
analyzeCFetch ", acctimellRW],
acctimellRW], 2.0*acctime(IRW]);
else
analyzeCFetch ", acctimetlRB],
acctimellRW], 2.0*acctime[IRU]);
> else C
analyzeCRAM read ",
, acctimelMRBl, acctimeCMRW], acctimetMRD]);
analyze("RAM write",
acctimelMWB], acctimelMWWl, acctimetMWD]);
if (emmok) (
analyzeCEMM read",
acctimetERB], acctimelERW], acctimelERD]);
analyzeCEMM write",
acctimelEWB); acctimeCEWW], acctimeCEWD]);
analyzeCROM read",
acctimelRRB], acctimelRRW], acctimelRRD])
analyzeCVideo write",
acctfmelVUB], acctimetVWW]acctimetVWD])
measure88()
register int i;
/* Measure the clock rate by executing multiply instructions. Each
* multiply takes a fixed number of clock cycles. */
elktime = 0;
for (i = 0; i < trials; i++) {
/* Obtain the number of clock ticks for "count" multiplies. ♦/
raw = multime(count);
/* Accunulate the clock time in microseconds by adjusting for the
* timer rate, number of clocks per multiply, instruction count, and
* test overhead. */
elktime += raw / (TIMER2_RATE *
((double)MULCLKS88*count + MULOVH88));
/* Calculate the average clock period by dividing by the number of
/♦ Calculate averages for all measurements. */
for (i a 0; i < VARS88; i++) ,
acctimeli] /= trials;
/* Calculate numeric processor clock rate using floating point divide
* instructions, using the same technique as was used to measure
* the processor clock rate*.*/ •
if (ndpok) <
fprate » 0; ■
for (i = 0; i < trials; i++) (
raw = fptime(FPCOUNT);
fpacc += (raw / TIMER2_RATE - FPOVH88) /
FPCLKS88 / FPCOUNT,*
fpacc /« trials;
fprate = 1.0/fpaccj
/* Set 86 flag if 2 clock byte instructions execute faster than 4
* clock instructions Ate to being fetched two to a word. */
six « acetime tIRB] < 0.9*acctime(IRX1; , *
measure286()
register int i;
/♦ Measure the clock rate by executing multiply instructions. Each
* multiply takes a fixed runber of clock cycles. */
elktime « 0; •
for (i = 0; i < trials; i++) (
/* Obtain the number of clock ticks for "count" multiplies. */
raw = multime(count);
/♦ Accumulate the clock time in microseconds by adjusting for the
* timer rate, number of clocks per multiply, instruction count, and
* test overhead. */
elktime += raw / (TIMER2_RATE *
((double)MULCLKS286*count + MULOVH286));
/* Calculate the average clock period by dividing by the-number of
* trials. The clock rate is the inverse of the clock period. */
elktime /= trials;
elkrate = 1.0/clktime;
/* Clear all of the memory speed accumulators. */
for (i = 0; i < VARS286; i++)
acctimeti] » 0;
/♦ Do the memory speed tests. */
i for (i = 0; i < trials; i++) €
/* Obtain the number of timer ticks for "count" clc instructions,
* which are limited by memory fetch time. */
raw = bclctime(count);
/* Accumulate the number of microseconds per instruction fetch by
* adjusting for timer rate, test overhead, and instruction count.
8cctime(IR8] +«
(raw / TIMER2_RATE - MOVOVH286) / count;
/* Make a similar measurement for the two byte "mov" instruction. *
raw = wmovtime(count);
acctimellRW] +=
76
PC TECH JOURNAL
(raw / TIMER2JATE - K0V0VH286) / count;
/♦ Measure byte read+write time measuring movs instructions. ♦/
raw » bmvstime(count);
acctimeCMRB] += raw/(TIMER2_RATE*count);
/* Calculate ROM read time by measuring movs from ROM to RAM. */
raw = bromtime(count);
acctimeCRRB] += raw/(TIMER2_RATE*count);
/* Measure word write using the pusha instruction. ♦/
raw » wpshtime(count) * WPOVH;
acctimeCMWW] += raw/(TIMER2_RATE*count);
/* Measure movs (read+write) time. */
raw = wmvstime(count);
acctimeCMRW] ./■+« raw/(TIMER2_RATE*count);
raw » wromtime(count);
acctimeCRRW] +« raw/ (TI MER2_RATE*count);
/* If EMM is present, do measurements on it using same techniques,
if (emmok) C
/* Measure byte mov in EMM. */
raw » bemmtime(count);
acctimeCERB] += raw/(TIMER2_RATE*count);
/* Measure word write, calculate word read. */
raw = wemptime(count) * WPOVH;
acctimeCEUU] += raw/(TIMER2_RATE*count);
raw = wemmtime(count);
acctime(ERW) += raw/(TIMER2_RATE*count);
/* Measure byte and word writes into video RAM. */
raw = bvidtime(count);
acctimeCVWB] += raw/(TIMER2_RATE*count)|
raw = wvidtime(count);
acctimeCVWW]*♦» raw/(TIMER2_RATE*count);
/* Calculate averages for all measurements. */
for (i = 0; i < VARS286; i++)
acctimeCi] /= trials;
/* Adjust word write times by subtracting instruction fetch time,
acctimelMWW] -= acctimeCIRW)/16;
if (emmok)
acctimeCIRW]/16;
acctimeCEUU]
/* Adjust for extra time per instruction when measuring zero wait
* state memory. */
if (acctimeCMWW] < 3.375*clktime)
acctimeCMWW] -= clktime/8;
. if (emmok)
if (acctimeCEUU] < 3.375*clktime)
acctimeCEUU] -= clktime/8;
/* Calculate byte write time by assuming the same ratio between read
* and write as for word access. */
acctimeCMWB] =* acctimeCMRB] * acctimeCMWW] /
acctimeCMRW];
if (emmok)
acctimeCEWB] = acctimeCERB] * acctimeCEWW] /
acctimeCERU];
/* Calculate read times by subtracting write time from
* mov (read+write) time. */
acctimeCMRB] * acctimeCMRB] * acctimeCMWB];.
acctimeCMRW] « acctimeCMRW] - acctimeCMWW]/
acctimetRRB] = acctimetRRB] - acctimeCMWB];
acctimeCRRW] = acctimeCRRW] • acctimeCMWW];
if (emmok) i
acctimeCERB) = acctimeCERB] * acctimetEWBJ;
acctimeCERW) = acctimeCERU] - acctimeCEWW];
Calculate numeric processor clock rate using floating point divide
instructions, using the same technique as was used to measure the
processor clock rate. */
.. if (ndpok) <' ■ . 7
fprate = 0;
for (i = 0; i < trials; i++) C
raw = fptime(FPCOUNT);
fpacc += (raw / TIMER2_RATE • FP0VH286) /
FPCLKS286 / FPCOUNT;
fpacc /= trials;
fprate « 1.0/fpacej
Fill in dword variables to provide complete input to analyze
acctimeCMRD] = 2.0 * acctimeCMRU];
acctimeCMWD) * 2.0 * acctimeCMWW];
acctimelERD] » 2.0 ♦ acctimeCERU];
acctimeCEWO] « 2.0 ♦ acctimeCEWW];
acctimeCRR0] =2.0* acctimeCRRW];
measure386()
register int i;
/♦ Measure the clock rate by executing multiply instructions. Each
* multiply takes a fixed number of clock cycles. */
elktime = 0;
for (i = 0; i < trials; i++) C
/♦ Obtain the number of clock ticks for “count 1 ' multiplies. */
raw = multime(count);
/* Accumulate the clock time in microseconds by adjusting for the
* timer rate, number of clocks per multiply, instruction count, and
* test overhead. */
elktime += raw / (TIMER2_RATE *
((double)MULCLKS386*coqnt + MULOVH386)); .
/* Calculate the average clock period by dividing bythe number of
* trials. The clock rate is the inverse of the Clock period. */
elktime /= trials;
elkrate = 1.0/clktime;
/♦Clear all of the memory speed accumulators. */
for (i = 0; i < VARS386; i++)
acctimeti] * 0;
/* Do the memory speed tests. */
for (i = 0; i < trials; i++) C
/* Obtain the number of timer ticks for "count" clc instructions,
* which are limited by memory fetch time. */
raw s beletime(count);
/* Accumulate the number of microseconds per instruction fetch by
* adjusting for timer rate, test overhead, and instruction count. */
acctimeCIRB] +=
(raw / TIMER2_RATE - MOVOVH386) / count;
/* Make a similar measurement for the two byte and four byte "mov"
* instruction. */
raw » wmovtime(count);
acctimellRW] +=
(raw / TIMER2RATE - MOVOVH386) / count;
raw » dmovtime(count);
acctimeURB] +«
(raw / TIMER2_RATE * M0V0VH386) / count;
7* Measure byte read+write time measuring movs instructions. */
raw = bmvstime(count);
acctimeCMRB] += raw/(TIMER2_RATE*count);
/* Calculate ROM read time by measuring movs from ROM to RAM. */
raw « bromtime(count);
acctimetRRB] += raw/(TIMER2__RATE*count);
/* Measure word and dword write using the pusha instruction. */
raw = wpshtime(count) - WPOVH;
acctimeCMWW] += raw/(TIMER2_RATE*count);
raw = dpshtime(count) • DPOVH;
acctimetMWD] += raw/(TIMER2_RATE*count);
/* Measure word and dword movs (read+write) time. */
raw = wmvstime(count);
acctimetMRW] += raw/(TIMER2_RATE*count);
raw = wromtime(count);
acctimeCRRW] += raw/(TIMER2_RATE*count);
raw = dmvstime(count);
acctimeCMRD] += raw/( TI MER2 -> RATE*count);
raw * dromtime(coinit);
acctimeCRRD] += raw/(TIMER2_RATE*count);
/* If EMM is present, do measurements on it using same techniques. */
if (emmok) {
raw « bemmtime(count);
acctimeCERB] += raw/(TIMER2_RATE*count);
raw « wemptime(count) * WPOVH;
acctimeCEWW] += raw/(TIMER2_RATE*count);
raw = wemmtime(count);
acctimeCERW] += raw/(TIMER2_RATE*count);
raw - demptime(count) -DPOVH;
acctimeCEW)] +=* raw/(TIMER2_RATE*count);
raw = demmtime(count);
acctimelERD] += raw/(TIMER2_RATE*count);
/* Measure writes into video RAM. */
raw ■- bvidtime(count);
MARCH 1987
UPDATE
acctime [VWB] += raw/CTIMER2_RATE*courit);
raw = wvidtime(count);
acctimetVWW] += raw/(TIMER2_RATE*count);
raw = dvidtime(count);
acctimelVWD] += raw/(TIMER2_RATE*count);
> . ..
■/* Calculate averages for all measurements. V
for (i = 0; 1 < VARS386; i++)
acctimeti] /= trials;
/* Adjust word write times by subtracting instruction fetch time. */
acctimetMWW] - = acctime[IRW]/16;
acctimetMWD] -= acctimetIRW]/8;
if (emmok) i
acctimetEWW] acctimeClRW]/16;
acctimeCEWD] - = acctime[IRW]/8;
>
/♦Adjust for extra time per instruction when measuring zero wait
* state memory. */
if (acctimetMWW] < 3.375*clktime)
acctimetMWW] -= elktime;
if (acctimetMWD] < 3.375*clktime)
acctimetMWD] -= clktime;
if (emmok) {
if (acctimeCEWW] < 3.375*clktime)
acctimetEWW] -= elktime;
if (acctimetEWD] < 3.375*clktime)
acctimeCEWD) -= clktime;
>
/* Calculate byte write time by assuming the same ratio between read
* and write as for word access. */
acctimetMWB] = acctimetMRB) * acctimetMWW] /
acctimeCMRW];
if (emmok)
acctimetEWB] = acctimetERB] * acctime[EWW] /
acctimetERW];
/* Calculate read times by subtracting write time from
* mov (read+write) time. */
acctimetMRB] = acctimetMRB] - acctimeIMWB3;
acctimetMRW] = acctimetMRW] - acctimetMWW];
acctimetMRD] = acctimetMRD] - acctimetMWD];
acctimelRRB] = acctimetRRB] - acctimetMWB];
acctimetRRW] * acctimetRRWl * acctimetMWW];
acctimeCRRD] = acctimeCRRD] -acctimetMWD];
if (emmok) (
acctimetERB] = acctimetERB] - acctimetEWB];
acctimetERW] = acctimetERW] - acctimetEWW];
acctimetERD] = acctimetERD] - acctimeCEWD];
■ > '../.v,;-.- .. ;v..:
/* Calculate numeric processor clock rate using floating point divide
* instructions, using the same technique as was used to measure the
* processor clock rate. */
if (ndpok) (
fprate = 0; /
for (i « 0; ? < trials; i++) (
raw = fptime(FPCOUNT);
fpacc += (raw / TIMER2_RATE - FPOVH386) /
FPCLKS386 / FPCOUNT;
>
fpacc /= trials;
fprate = 1.0/fpace;
■ * '■ .. ■ „ :
> , . : ' ,7 ' •
/* analyze. This procedure deduces information about the memory based
* on the measured times. If byte (8 bits) and word (16 bits) times
* are different then the memory is byte oriented since each word
* operation takes two byte operations. Otherwise, if the byte and
* word times are about the same, the memory is word oriented and can
* access either a word or a byte in a single memory cycle.
* Similar arguments can be made about 32 bit accesses.
* Each memory access takes an exact number of processor clock
* cycles. The first two are required by the processor, but
* any additional cycles are determined by the memory and are
* called wait states (because the processor is waiting for
* the memory.) V
analyze(name, btime, wtime, dtime)
char *name;
double btime;
double wtime;
double dtime;
(
double
t;
/* Print the heading */
printf("%-12s", name);
/* Determine whether the memory is byte oriented, word oriented, dword
* oriented, or other. (If other, the data are Suspect.) */
if (wtime > dtime*0.66 &&
wtime < dtime*!.33) <
printfC* Dword ")
t = dtime;
} else
if (wtime*2 > dtime*0.66 &&
wtime*2 < dtime*1.33 &&
btime > wtime*0.66 &&
btime < wtime*1.33) C
printfC Word ")
t = wtime;
) else
if (btime*2 > wtime*0.66 &&
btime*2 < wtime*1.33) i
printfC Byte “)
t = btime;
> else
(
printfC* Strange")
t = btime;
/* Determine the number of wait states by dividing by the clock
* period, subtracting two processor clock times, and rounding down
* to an integer. */
t = t /
clktime - access_clks;
if (t <
0.0)
t = 0.0;
printf(
)
* %6d\n", (unsigned)t);
LISTING 2: TIMEASM
NAME TIME
_TEXT SEGMENT
PARA PUBLIC 'CODE'
_TEXT ENDS
CONST SEGMENT
PARA PUBLIC 'CONST*
CONST ENDS
_BSS SEGMENT
PARA PUBLIC 'BSS*
_BSS ENDS
_DATA SEGMENT
PARA PUBLIC 'DATA'
_DATA ENDS
DGROUP GROUP
CONST, _BSS, _DATA
ASSUME
CS: _TEXT, DS: DGROUP, SS: DGROUP, ES: DGROUP
TESTSEG SEGMENT PARA PUBLIC ‘TEST 1
TESTSEG_START
TESTSEG ENDS
DW ' 32767 DUP (?)
PPI_P0RT
EQU 061H
TIMER2_PORT
EQU 042H
TIMER_CTRL
EQU 043H
JJATA
SEGMENT
i|f -
VIDBASE
DW 0B800H
y-yy ' -..yfy " -' >V
EMMBASE
DW 90Q0H f
- - ■
PID
DW ?
EMM_NAME
DB "EMMXXXX0"
_DATA
ENDS
_TEXT
SEGMENT
.
; JflJLTIME
f
; TIME EXECUTION OF MULTIPLY INSTRUCTIONS ;
.***************************************************************.
EVEN
DB
?, ?
PUBLIC _MULTIME
_MULTIME
PROC NEAR
PUSH
BP
SAVE FRAME
MOV
BP, SP
PUSH
DI
SAVE DI
CALL
SETUP_TIMER
SET UP TIMER
MOV
Dl, 08000H
SET DI
MOV
AX, CBP+4]
GET COUNT ARGUMENT
►ADD
AX, 99
ROUND UP
MOV
CX, 100
DIVIDE BY 100 =
DIV
CL
NUMBER OF INSTRUCTIONS
MOV
CL, AL
PER PASS
NOP
ALIGN INSTRUCTIONS
IN
AL, PPIMPORT
GET CURRENT CONTROL
78
PC TECH JOURNAL
SAVE IN BL
SET TIMER ENABLE B1
DO 100 MOV DX,05555H
THE LONG WAY (WITH MOD R/M)
END MACRO
COUNT THIS PASS
JUMP IF COMPLETE
LOOP BACK IF NOT DONE
RESTORE CONTROL VALUE
END MACRO
COUNT THIS PASS
JUMP IF COMPLETE
LOOP BACK IF NOT DONE
RESTORE CONTROL VALUE
START INTERRUPTS
OBTAIN FINAL COUNT
RESTORE DI
RESTORE BP
RETURN
CALL GET_TIMER
POP DI
POP BP
' RET..'.;
DMOVTIME ENDP
STI ; START INTERRUPTS
CALL GET_TIMER ; OBTAIN FINAL COUNT
POP DI ; RESTORE DI
POP BP ; RESTORE BP
RET ; RETURN
MULTIME ENDP
_BCLCTIME
TIME EXECUTION OF CLC INSTRUCTION (INSTR. READ TIME)
EVEN
PUBLIC _BCLCTIME
BCLCTIME PROC NEAR
PUSH BP ; SAVE FRAME
MOV BP, SP
PUSH DI ; SAVE DI
CALL SETUPJTMER ; SET UP TIMER
MOV DI, 0 ; CLEAR DI
MOV AX, [BP+4] ; GET COUNT ARGUMENT
ADD AX, 99 ; ROUND UP
MOV CX, 100 ; DIVIDE BY 100 =
OIV CL ■ . ; NUMBER OF INSTRUCTIONS
MOV CL, AL ; PER PASS
NOP ; ALIGN INSTRUCTIONS
IN AL, PPI_PORT ; GET CURRENT CONTROL
MOV BL, AL ; SAVE IN BL
OR AX, 1 ; SET TIMER ENABLE BIT
CU ; STOP INTERRUPTS
OUT PPIJ-ORT, AL ; ENABLE TIMER
IIL: REPT 100 ; DO 100 CLC'S
_WMOVTIME
TIME EXECUTION OF MOV INSTRUCTION (INSTR. READ TIME)
PUBLIC. JWMOVTIME
PROC * NEAR
WMOVTIME
SAVE DI
SET UP TIMER
CLEAR DI
GET COUNT ARGUMENT
ROUND UP
DIVIDE BY 100 =
NUMBER OF INSTRUCTIONS
PER PASS
ALIGN INSTRUCTIONS
GET CURRENT CONTROL
SAVE IN BL
SET TIMER ENABLE "bi't"'^'
STOP INTERRUPTS
ENABLE TIMER
DO 100. MOVES
CALL SETUP TIMER
MOV .AX, CBP+43
ADD AX, 99
MOV CX, 100
DIV CL
MOV CL, AL
END MACRO
COUNT THIS PASS
JUMP IF COMPLETE
LOOP BACK IF NOT DONE
RESTORE CONTROL VALUE
JZ BID
JMP BIL
END MACRO
COUNT THIS PASS'
JUMP IF COMPLETE
LOOP BACK IF NOT DONE
RESTORE CONTROL VALUE
; START INTERRUPTS
; OBTAIN FINAL COUNT
; RESTORE DI
; RESTORE BP
; RETURN
CALL GET TIMER
.POP DI
POP BP
RET
BCLCTIME ENDP .
StART INTERRUPTS
_8DAATIME
TIME EXECUTION OF DAA INSTRUCTION (INSTR. READ TIME)
RETURN
WMOVTIME ENDP
-Ti
_DMOVTIME
TIME EXECUTION OF MOV INSTRUCTION (INSTR. READ TIME)
PUBLIC _BDAATIME
BDAATIME PROC NEAR
PUSH BP
. ■ . u,: : m: ; .m : ■ t
MOV BP, SP
PUSH DI
CALL SETUP_TIMER
MOV DI, 0
MOV AX, CBP+43
ADD AX, 99
MOV CX, 100
DIV CL
MOV ' CL,' AL "
SAVE DI
SET UP TIMER
CLEAR DI
GET COUNT ARGUMENT
ROUND UP :
DIVIDE BY 100 ~
NUMBER OF INSTRUCTION
PER PASS
ALIGN INSTRUCTIONS
GET CURRENT CONTROL
SAVE IN BL
SET TIMER ENABLE BIT
STOP INTERRUPTS
ENABLE TIMER
DO 100 DAA'S
PUSH DI
CALL SETUP^TIMER
MOV DI, 0
MOV AX, [BP+4]
ADD AX, 99
MOV CX, 100
DIV CL
MOV CL, AL
NOP
IN AL, PPI PORT
SAVE DI
SET UP TIMER
CLEAR DI
GET COUNT ARGUMENT
ROUND UP
DIVIDE BY100 =
NUMBER OF INSTRUCTIONS
PER PASS
ALIGN INSTRUCTIONS
GET CURRENT CONTROL
SAVE IN BL
SET TIMER ENABLE BIT
STOP INTERRUPTS
ENABLE TIMER
END MACRO
COUNT THIS PASS
JUMP IF COMPLETE
CALL
GET_TIMER
; OBTAIN FINAL COUNT
POP
DI
; RESTORE DI
POP
BP
; RESTORE BP
PUBLIC
JJMOVTIME
■ * —-
_DMOVTIME
PROC
NEAR
PUSH
BP
; SAVE FRAME
MOV
BP, SP
i
CLI
; STOP INTERRUPTS
OUT
PPI_PORT, AL
; ENABLE TIMER
ML:
REPT
100
; DO 100 MULTIPLIES
MARCH 1987
FORTRAN PROGRAMMERS
LCS ANNOUNCES F77L LAHEY FORTRAN VERSION 2.20
WE JUST MADE OUR TOP RATED FORTRAN LANGUAGE SYSTEM BETTER.
“Lahey’s F77L FORTRAN is the compiler of choice. It’s definitely a
‘Programmer's FORTRAN, ’ with features to aid both the casual and
the professional programmer. . . F77L compiled the five files in a total
of 12 minutes, which was 4 times as fast as MS FORTRAN and an
astounding 6 times as fast as Pro FORTRAN...”
—Editor’s Choice PC Magazine
HERE ARE JUST A FEW OF THE REASONS
WHY F77L IS THE COMPILER OF CHOICE:
• Full Implementation of the • Clear and Precise
ANSI 77 Standard English Diagnostics
• Fast Compilation—outruns • Long Variable Names—
everything on the market Up to 31 Characters
• Powerful Multi-Featured • COMPLEX* 16,
Source On-Line Debugger LOGICAL* 1 and
• Popular Extensions for easy INTEGER*2
porting of mainframe and • IEEE Standard
mini computer programs Floating Point
(Including NAMELIST) • Compatibility with popular
• Recursion—allocates local third party software
variables on the stack • Unmatched Technical
• Arrays and COMMONS Support with an on-line
greater than 64K bulletin board
NEW FEATURES WITH VERSION 2.20:
• Cross reference and source listings
• Allocation maps of COMMON variables and arrays
• In-line comments
• IMPLICIT NONE compiler option
• Faster Execution
• Source On-Line Debugger (SOLD) includes:
Trace Execution; No Relinking required;
On-screen Listing; No effect on code size
Call about our New F77L development tools:
Lahey Profiler Mathematical Functions Library Overlay Linker
It is more than just features that make F77L an outstanding
product; it is the years of experience behind the software. At
Lahey Computer Systems, we have been developing
FORTRAN compilers since 1967 and we are committed to
keeping F77L the industry leader.
When PC Magazine selected our version 1.35 as the Editor’s
Choice among PC FORTRANs, we were pleased but not
completely satisfied—we knew we could improve the
product. F77L Version 2.20 increases our lead over the
competition. F77L’s precise diagnostics, advanced debug
package, helpful user screens and comprehensive manual
make it a complete and easy to use high productivity tool.
When evaluating any software package, an important factor
to consider is the value of your time. F77L saves you time and
money the moment you start using it. Our FORTRAN
Language System has the key features you need to increase
productivity and get the job done. Other PC FORTRANs may
be cheaper than F77L, but none are less expensive to use.
F77L—THE PROGRAMMER S FORTRAN
Price: $477.00 Includes Free UPS 2nd Day shipping.
System Requirements: MS-DOS or PC-DOS (2.0 or greater),
256K, math coprocessor (8087-80287)
TO ORDER OR FOR MORE INFORMATION:
702-831-2500
Lahey Computer Systems, Inc.
P.O. Box 6091, Incline Village, NV 89450
Telex: 9102401256
International Representatives:
Canada: Barry Mooney & Assoc., Tel. (902)6652941 • England: Grey Matter Ltd. Tel. (0364)53499 • Switzerland: DST Comp. Services. Tel. (022)989188
Denmark: Ravenholm Computing. Tel. (02)887249 • Australia: Comp. Transitions, Tel. (03)5372786 • Japan: Microsoft ware Inc.. Tel. (03)8138222
MS-DOS & MS FORTRAN are trademarks of Microsoft Corporation. Pro FORTRAN refers to IBM PC Professional FORTRAN by Ryan McFarland
CIRCLE NO. 128 ON READER SERVICE CARD
UPDATE
POP
BP
RESTORE BP
RET
RETURN
JWMVSTIME
ENDP
•***************************************************************. j
; _DMVSTIME
;
; TIME
EXECUTION OF REP MOVSW INSTRUCTION
PUBLIC J5MVSTIME
_DMVSTIME
PROC NEAR
PUSH
BP
SAVE FRAME
MOV
BP, SP
PUSH
DS
SAVE DS
PUSH
ES
SAVE ES
PUSH
SI
SAVE SI i
PUSH
DI
SAVE DI
CALL
SETUP_TIMER
SET UP TIMER
DB
066H
32 BIT OPERANDS:
XOR
DI, DI
CLEAR EDI
DB
066H
32 BIT OPERANDS:
XOR
SI, SI
CLEAR ESI
DB
066H
32 BIT OPERANDS:
XOR
CX, CX
CLEAR ECX
MOV
DI, TESTSEG
MOV
ES, DI
MOV
DS, DI
LEA
SI, TESTSEG_START
DS:SI *> TEST SEGMENT P
LEA
DI, TESTSEG_START
ES:DI -> TEST SEGMENT
MOV
CX, [BP+4]
GET COUNT ARGUMENT
IN
AL, PPI_PORT
GET CURRENT CONTROL
MOV
BL, AL
SAVE IN BL
OR
AX, 1
SET TIMER ENABLE BIT
CL I
STOP INTERRUPTS
CLD
SET FORWARD DIRECTION
OUT
PPI_PORT, AL
ENABLE TIMER
DB
066H
32 BIT OPERANDS:
i REP MOVSW ;
RUN TEST
MOV
AL, BL
RESTORE CONTROL VALUE
OUT
PPI_PORT, AL
STI
START INTERRUPTS .
CALL
GET_TIMER
OBTAIN FINAL COUNT
POP
DI
RESTORE DI
POP
SI
RESTORE SI
POP
ES
RESTORE ES
POP
DS
RESTORE DS
POP
BP
RESTORE BP
RET
RETURN
DMVSTIME
ENDP
.***************************************************************. {
; . _WPSHTIME
; - TIME
EXECUTION OF PUSHA INSTRUCTION
EVEN
DB
?
PUBLIC _WPSHTIME
_WPSHTIME
PROC NEAR
PUSH
BP
SAVE FRAME
MOV
BP, SP
CALL
SETUP_TIMER
SET UP TIMER
MOV
AX, [BP+4]
•GET COUNT ARGUMENT
CUD
MAKE DOUBLE WORD
MOV
CX, 200
DIV
CX
DIVIDE BY MOVS/LOOP
MOV
CX, AX
IN
AL, PPI_PORT
GET CURRENT CONTROL
MOV
BL, AL
SAVE IN BL
OR
AX, 1
SET TIMER ENABLE BIT
CLI
STOP INTERRUPTS
OUT
PPI_PORT, AL
ENABLE TIMER
WSL: REPT
25
PUSH THE REGISTERS
DB
60H
ENDM
END MACRO
MOV
SP, BP
PUT THE STACK BACK
LOOP
WSL
LOOP UNTIL DONE
MOV
AL, BL
RESTORE CONTROL VALUE
OUT
PPI_PORT, AL
STI
START INTERRUPTS
CALL
GET_TIMER
OBTAIN FINAL COUNT
MOV
SP, BP
PUT THE STACK BACK
POP
BP
RESTORE BP
RET
RETURN
JMP
BXL
LOOP BACK IF NOT DONE
BXD: MOV
AL, BL
RESTORE CONTROL VALUE
OUT
PPIMPORT, AL
STI
START INTERRUPTS
CALL
GET_TIMER
OBTAIN FINAL COUNT
POP
DI
RESTORE DI
POP
BP
RESTORE BP
RET
RETURN
_BDAATIME
ENDP
. *************************************************************** .
; _BMVSTIME
»
; time
EXECUTION OF REP MOVSB INSTRUCTION ; j
.*****»****«■>
PUBLIC _BMVSTIME
_BMVSTIME .
PROC NEAR
'
PUSH
BP
SAVE FRAME
MOV
BP, SP
PUSH
DS
SAVE DS
PUSH
ES -
SAVE ES
PUSH
-Si
SAVE SI '
PUSH
DI
SAVE DI
CALL
SETUP_TIMER
SET UP TIMER
MOV
DI, TESTSEG
MOV
ES, DI
MOV
DS, DI
: V : X. ' V ! :Y ^ '
LEA
SI, TESTSEG_START .
DS:SI *> TEST SEGMENT
LEA
DI, TESTSEG_START
ES:DI -> TEST SEGMENT
MOV
CX, [BP+4]
GET COUNT ARGUMENT
IN
AL, PPI_PORT
GET CURRENT CONTROL
MOV
BL, AL
SAVE IN BL
, 0R
AX, 1
SET TIMER ENABLE;BIT
CLI
STOP INTERRUPTS
CLD
SET FORWARD DIRECTION
OUT
PPI_PORT, AL
ENABLE TIMER
REP MOVSB i
RUN TEST
MOV
AL, BL
RESTORE CONTROL VALUE
OUT
PPI_PORT, AL
STI
START INTERRUPTS
CALL
GETJTIMER
OBTAIN FINAL COUNT
POP
DI
RESTORE DI
POP
SI
RESTORE SI
POP
ES
RESTORE ES
POP
DS
RESTORE DS
POP
BP
RESTORE BP
RET
RETURN
BMVSTIME
ENDP
.***************************************************************.
; _WMVSTIME
;
; TIME EXECUTION OF REP MOVSW INSTRUCTION > . c ?
*
PUBLIC _WMVSTIME
_WMVSTIME
PROC NEAR
PUSH
BP
SAVE FRAME
MOV
BP, SP
PUSH
DS
SAVE DS
PUSH
ES
SAVE ES
PUSH
SI " ■
SAVE SI
PUSH
DI
SAVE DI
CALL
SETUP_TIMER
SET UP TIMER
MOV
DI, TESTSEG
MOV
ES, DI
MOV
DS, DI
! lea
SI, TESTSEG_START
DS:SI -> TEST SEGMENT
LEA
DI, TESTSEG_START
ES:DI -> TEST SEGMENT
MOV
CX, [BP+4]
GET COUNT ARGUMENT
IN
AL, PPI_PORT
GET CURRENT CONTROL
MOV
BL, AL
SAVE IN BL
OR
AX, 1
SET TIMER ENABLE BIT
CLI
STOP INTERRUPTS
CLD
SET FORWARD DIRECTION
OUT
PPI_PORT, AL
ENABLE TIMER
REP MOVSW ;
RUN TEST
MOV
AL, BL
RESTORE CONTROL VALUE
OUT
PPIMPORT, AL
STI
START INTERRUPTS
CALL
* GET_TIMER
OBTAIN FINAL COUNT
POP
DI
RESTORE DI
POP
SI
RESTORE SI
POP
ES
RESTORE ES
POP
DS ..
RESTORE DS
MARCH 1987
81
STRAIGHT TALK
Our NETBIOS
LAN/Gateway
... has been designed by our professionals to meet
the most exacting standards. If your installation
has a unique condition , just call us. Our
technicians in Scottsdale will fix it , or under our
QuickFix Program * will be on your doorstep
within 48 hours.. .probably much sooner. And if
they can't make it ; call me, and I will.
Jim Pitre,
President
With Linkup products your beginning purchase is just
that...a foundation that works.
Doesn’t it make ever so much more sense to develop
your software and computer systems as upgradable
assets? Begin with our Linkup 3270 Interactive Ter¬
minal Facility (ITF) connection to the mainframe, then
expand or change as your needs require to include...
...File Transfer. Two programs for your considera¬
tion. One interfaces with the TSO or CMS editor; one
works with IBM 3270 PC host-based file transfer
under TSO, CMS or CICS...
...or Application Program Interface. Integrate your
own programs to use the capabilities of 3270
SNA/BSC, 3770 SNA and 3780 BSC emulations...
...or Linkup SpeedPrint. Data rates up to 19.2 Kbps
from an application or disk to a dedicated high-speed
printer, eliminating host/local print conflict.
...or LAN/Gateway. With the addition of interfacing
modules the LinkUp 3270 ITF runs on most Local
Area Networks. Use the advanced package for
datacom between PCs on a LAN and IBM or
compatible host.
These intelligent software capabilities offer the
options your computer environment just may require.
For today. For tomorrow.
* QuickFix Program
In addition to telephone assistance from Scottsdale, Infor¬
mation Technologies, Inc. stands ready to help you in critical
situations. We’re different because when our product is at fault
and it can’t be fixed from Scottsdale, we will come to you
anywhere in the contiguous 48 states at no charge. If the problem
is caused by your PC, the way you’ve configured it, the main¬
frame, or any reason other than our product, then you pay our
standard consulting fee plus expenses.
•SOS - -!
Designed, engineered and
manufactured in the U.S.A.
INFORMATION
TECHNOLOGIES INC.
7850 East Evans Road, Scottsdale, Arizona 85260 1-800-431-3460 1-602-998-1033
Call us. Our engineers speak SNA/SDLC, BSC, ASCII, EBCDIC and Human.
CIRCLE NO. 138 ON READER SERVICE CARD
UPDATE
_WPSHTIME ENDP
. *************************************************************** .
; _DPSHTIME
; TIME EXECUTION OF PUSHA INSTRUCTION
.***************************************************************.
i i
EVEN
DB ?, ?, ?
PUBLIC _DPSHTIME
_DPSHTIME PROC NEAR
PUSH BP
MOV BP, SP
CALL SETUP_TIMER
SAVE FRAME
SET UP TIMER
MOV AX, [BP+4]
CWD
MOV CX, 200
GET COUNT ARGUMENT
MAKE DOUBLE WORD
DIV CX
MOV CX, AX
AND SP, OFFFCH
DIVIDE BY MOVS/LOOP
ALIGN SP
PUSH AX
PUSH BP
MOV BP, SP
DUMMY
SAVE BP
IN AL, PPI_PORT
MOV BL, AL
OR AX, 1
GET CURRENT CONTROL
SAVE IN BL
SET TIMER ENABLE BIT
CLI
OUT PPI_PORT, AL
DSL: REPT 25
STOP INTERRUPTS
ENABLE TIMER
PUSH THE BIG REGISTERS
DB 66H, 60H
ENDM
MOV SP, BP
END MACRO
PUT THE STACK BACK
LOOP DSL
MOV AL, BL
OUT PPI_PORT, AL
LOOP UNTIL DONE
RESTORE CONTROL VALUE
ST I
POP BP
CALL GET_TIMER
START INTERRUPTS
OBTAIN FINAL COUNT
MOV SP, BP
POP BP
RET
PUT THE STACK BACK
RESTORE BP
RETURN
_DPSHTIME ENDP
.***************************************************************.
/ /
; _BROMTIME
; TIME EXECUTION OF REP MOVSB INSTRUCTION FROM ROM
•*★****★★★*★★**★★★★★★★*★★*★**★*★★***★★★★★★*★**★*★★★★★**★★★★*★★*★•
i /
PUBLIC _BROMTIME
_BROMTIME PROC NEAR
PUSH BP
MOV BP, SP
SAVE FRAME
PUSH DS
PUSH ES
PUSH SI
SAVE DS
SAVE ES
SAVE SI
PUSH DI
CALL SETUP_TIMER
MOV DI, TESTSEG
SAVE DI
SET UP TIMER
MOV ES, DI
MOV DI, 0F000H
MOV DS, DI
SET DS TO ROM START
MOV SI, 0
LEA DI, TESTSEG_START
MOV CX, [BP+4]
DS:SI -> ROM
ES:DI -> TEST SEGMENT
GET COUNT ARGUMENT
IN AL, PPI_PORT
MOV BL, AL
OR AX, 1
GET CURRENT CONTROL
SAVE IN BL
SET TIMER ENABLE BIT
CLI
CLD
OUT PPI_PORT, AL
STOP INTERRUPTS
SET FORWARD DIRECTION
ENABLE TIMER
REP MOVSB
MOV AL, BL
OUT PPI_PORT, AL
RUN TEST
RESTORE CONTROL VALUE
ST I
CALL GET_TIMER
POP DI
START INTERRUPTS
OBTAIN FINAL COUNT
RESTORE DI
POP SI
POP ES
POP DS
RESTORE SI
RESTORE ES
RESTORE DS
POP BP
RET
_BROMTIME ENDP
RESTORE BP
RETURN
,***************************************************************
_WROMTIME
TIME EXECUTION OF REP MOVSW INSTRUCTION FROM ROM ;
***************************************************************,
_WROMTIME
PUBLIC _WROMTIME
PROC NEAR
PUSH
BP
; SAVE FRAME
MOV
BP,
SP
PUSH
DS
; SAVE DS
PUSH
ES
; SAVE ES
PUSH
SI
; SAVE SI
PUSH
DI
; SAVE DI
CALL
SETUP_TIMER
; SET UP TIMER
MOV
DI,
TESTSEG
MOV
ES,
DI
MOV
DI,
0F000H
; SET DS TO ROM START
MOV
DS,
DI
MOV
SI,
0
; DS:SI -> ROM
LEA
DI,
TESTSEG_START
; ES:DI -> TEST SEGMENT
MOV
CX,
[BP+4]
; GET COUNT ARGUMENT
IN
AL,
PPI_PORT
; GET CURRENT CONTROL
MOV
BL,
AL
; SAVE IN BL
OR
AX,
1
; SET TIMER ENABLE BIT
CLI
; STOP INTERRUPTS
CLD
; SET FORWARD DIRECTION
OUT
PPI
PORT, AL
; ENABLE TIMER
REP MOVSW
; RUN TEST
MOV
AL,
BL
; RESTORE CONTROL VALUE
OUT
PPI
PORT, AL
ST I
; START INTERRUPTS
CALL
GET
_TIMER
; OBTAIN FINAL COUNT
POP
DI
; RESTORE DI
POP
SI
; RESTORE SI
POP
ES
; RESTORE ES
POP
DS
; RESTORE DS
POP
BP
; RESTORE BP
RET
; RETURN
_WROMTI ME
ENDP
***************************************************************
_DROMTIME
TIME EXECUTION OF REP MOVSW INSTRUCTION FROM ROM
***************************************************************,
_DROMTIME
PUSH
PUBLIC _DROMTIME
PROC NEAR
BP
SAVE FRAME
MOV
BP, SP
PUSH
DS
SAVE DS
PUSH
ES
SAVE ES
PUSH
SI
SAVE SI
PUSH
DI
SAVE DI
CALL
SETUP_TIMER
SET UP TIMER
DB
066H
32 BIT OPERANDS:
XOR
DI, DI
CLEAR EDI
DB
066H
32 BIT OPERANDS:
XOR
SI, SI
CLEAR ESI
DB
066H
32 BIT OPERANDS:
XOR
CX, CX
CLEAR ECX
MOV
DI, TESTSEG
MOV
ES, DI
MOV
DI, 0F000H
SET DS TO ROM START
MOV
DS, DI
MOV
SI, 0
DS:SI -> ROM
LEA
DI, TESTSEG_START
ES:DI -> TEST SEGMENT
MOV
CX, [BP+4]
GET COUNT ARGUMENT
IN
AL, PPI_PORT
GET CURRENT CONTROL
MOV
BL, AL
SAVE IN BL
OR
AX, 1
SET TIMER ENABLE BIT
CLI
STOP INTERRUPTS
CLD
SET FORWARD DIRECTION
OUT
PPI_PORT, AL
ENABLE TIMER
DB
066H
32 BIT OPERANDS:
REP MOVSW ;
RUN TEST
MOV
AL, BL
RESTORE CONTROL VALUE
OUT
PPI_PORT, AL
STI
START INTERRUPTS
CALL
GET_TIMER
OBTAIN FINAL COUNT
POP
DI
RESTORE DI
POP
SI
RESTORE SI
POP
ES
RESTORE ES
POP
DS
RESTORE DS
MARCH 1987
83
UPDATE
POP
BP
RESTORE BP
RET
RETURN
JJROMTIME
ENDR
- .
.***************************************************************.
_BVIDTIME
;
; TIME
EXECUTION OF REP STOSB INTO VIDEO MEMORY
PUBLIC JBVIDTIME
v *. ■
:
JBVIDTIME
PROC NEAR
PUSH
BP
SAVE FRAME
MOV
BP, SP
PUSH
ES
SAVE ES
PUSH
DI
SAVE DI
CALL
SETUPJIMER
SET UP TIMER
MOV
AX, VIDBASE
GET BASE ADDRESS
MOV
ES, AX
MOV
o
o
ES:DI •> VIDEO MEMORY
MOV
CX, [BP+4]
GET COUNT ARGUMENT
IN
AL, PPI_PORT
GET CURRENT CONTROL
MOV
BL, AL
SAVE IN BL
OR
AX, 1
SET TIMER ENABLE BIT
CL I
STOP INTERRUPTS
CLD
SET FORWARD DIRECTION
OUT
PPI_PORT, AL
ENABLE TIMER
REP STOSB '
RUN TEST
MOV
AL, BL ..
RESTORE CONTROL VALUE
OUT
PPI_PORT, AL
\'
ST I
START INTERRUPTS
CALL
GET_TIMER
OBTAIN FINAL COUNT
POP
DI
RESTORE DI
POP
ES
RESTORE ES
POP
BP
RESTORE BP
RET
RETURN
BVIDTIME
ENDP
***************************************************************.
_WVIDTIME
;
TIME EXECUTION OF REP STOSW INTO VIDEO MEMORY ;
PUBLIC JUVIDTIME
#
WVIDTIME
PROC NEAR
PUSH
BP
SAVE FRAME
MOV
BP, SP
PUSH
ES
SAVE ES
PUSH
DI
SAVE DI
CALL
SETUP _TIMER
SET UP TIMER
MOV
AX, VIDBASE
GET BASE ADDRESS
MOV
ES, AX
MOV
DI, 0
ES:DI -> VIDEO MEMORY
MOV
CX, CBP+43
GET COUNT ARGUMENT
IN
AL, PPI_PORT
GET CURRENT CONTROL
MOV
BL, AL
SAVE IN BL
OR
AX, 1
SET TIMER ENABLE BIT
CL I
STOP INTERRUPTS
CLD
SET FORWARD DIRECTION
, v OUT
PPIPORT, AL
ENABLE TIMER
REP STOSW
RUN TEST
MOV
AL, BL
RESTORE CONTROL VALUE
OUT
PPI_PORT, AL
; STI
START INTERRUPTS
CALL
GET TIMER
OBTAIN FINAL COUNT
POP
DI
RESTORE DI
v . POP
ES . . .
RESTORE- ES,
pop ;
BP
RESTORE BP
RET
RETURN
WVIDTIME
ENDP
***************************************************************.
J3VIDTIME
TIME EXECUTION OF REP STOSW INTO VIDEO MEMORY
PUBLIC JDVIDTIME
DVIDTIME
PROC NEAR
PUSH
BP
SAVE FRAME
MOV
BP, SP
PUSH
ES
SAVE ES
PUSH
DI
SAVE DI
CALL
SETUP_TIMER
SET UP TIMER
DB
066H
32 BIT OPERANDS:
XOR
DI, DI
CLEAR EDI
v y ■ ■ ^ db
066H
32 BIT OPERANDS:
XOR
CX, CX
CLEAR ECX
MOV •:
AX, VIDBASE
GET BASE ADDRESS
MOV
ES, AX
DB
066H
32 BIT OPERANDS:
MOV
AX, 0700H
MOV EAX, 07000700H
DW
0700H
MOV
CX, CBP+43
GET COUNT ARGUMENT
IN
AL, PPIJMJRT
GET CURRENT CONTROL
MOV
BL, AL
SAVE IN BL
OR
AX, 1
SET TIMER ENABLE BIT
CLI
STOP INTERRUPTS
CLD
SET FORWARD DIRECTION
OUT
PPIMPORT, AL
ENABLE TIMER
DB
066H
32 BIT OPERANDS:
REP STOSW ,
RUN TEST
MOV
AL, BL
RESTORE CONTROL VALUE
OUT
PPI_PORT, AL
STI
START INTERRUPTS
CALL ;
GETJTIMER
OBTAIN FINAL COUNT
POP
DI
RESTORE DI
POP
ES
RESTORE ES
POP
BP
RESTORE BP
RET
RETURN
DVIDTIME
ENDP
_SETUPJ/IOEO
DETECT
THE TYPE OF VIDEO CARD AND SAVE THE BASE ;
***************************************************************.
PUBLIC _SETUP_VIDEO
.
SETUP
VIDEO
PROC NEAR
PUSH
BP
SAVE REGISTERS
PUSH
ES
PUSH
SI
PUSH
DI
I NT
11H
EQUIPMENT DETERMINATION
AND
AL, 30H
MASK DISPLAY BITS
CMP
AL, 30H
CHECK FOR MONOCHROME
MOV
AX, OBOOOH
MONOCHROME BASE
JE
SVM
JUMP IF MONOCHROME
MOV
AX, 0B800H
COLOR BASE
SVM:
MOV
VIDBASE, AX
SAVE BASE ADDRESS
POP
DI
RESTORE REGISTERS
POP
SI
POP
ES
POP
BP
RET
RETURN 0
SETUP
VIDEO
ENDP
***************************************************************.
_FPTIME
;
TIME EXECUTION OF FLOATING POINT DIVIDE ;
EVEN
*
DB
?
PUBLIC _FPTIME
_FPTtME
PROC NEAR
■ ' :.v: . ;■ .. . ,y
PUSH
BP
‘SAVE FRAME
MOV
BP, SP
PUSH
DI
SAVE DI
CALL
SETUP_TIMER
SET UP TIMER
MOV
DI, 0
CLEAR DI
MOV
AX, CBP+43
GET COUNT ARGUMENT
ADD
AX, 99
ROUNO UP
MOV
CX, 100
DIVIDE BY 100 =
DIV
CL
NUMBER OF INSTRUCTIONS
MOV
CL, AL
PER PASS
IN
AL, PPI_PORT
GET CURRENT CONTROL
MOV
BL, AL
SAVE IN BL
OR
AX, 1
SET TIMER ENABLE BIT
FNINIT
INIT FP
FLD1
DIVIDE 1.0
FLD1
BY 1.0
CLI
STOP INTERRUPTS
OUT
PPIMPORT, AL
ENABLE TIMER
FL:
REPT
100
DO 100 DIVIDES
FDIV
ST(1), ST
ENDM
END MACRO
DEC
CX
COUNT THIS PASS
JZ
FD
JUMP IF COMPLETE
JMP
FL .
LOOP BACK IF NOT DONE
84
PC TECH JOURNAL
RESTORE CONTROL VALUE
FD: MOV
OUT
STI
AL, BL
PPI_PORT, AL
RESTORE CONTROL VALUE
START INTERRUPTS
CALL
GET_TIMER
OBTAIN FINAL COUNT
POP
DI
RESTORE DI
POP
BP
RESTORE BP
RET
_FPTIME
ENDP
RETURN
.********************************★******************************
_WEMPTIME
TIME EXECUTION OF PUSHA INSTRUCTION
, ***************************************************************
EVEN
DB
?, ?, ?
PUBLIC _WEMPTIME
_WEMPTIME
PROC NEAR
PUSH
BP
; SAVE FRAME
PUSH
DI
; SAVE DI
MOV
BP, SP
CALL
SETUP_TIMER
; SET UP TIMER
MOV
AX, CBP+6]
; GET COUNT ARGUMENT
CWD
; MAKE DOUBLE WORD
MOV
CX, 200
DIV
CX
; DIVIDE BY MOVS/LOOP
MOV
CX, AX
IN
AL, PPI_PORT
; GET CURRENT CONTROL
MOV
BL, AL
; SAVE IN BL
OR
AX, 1
; SET TIMER ENABLE BIT
CLI
; STOP INTERRUPTS
MOV
DX, SS
; SAVE STACK SEGMENT
MOV
SS, EMMBASE
; PUT STACK IN EMM
MOV
SP, 400
; SET SP FOR PUSHES
MOV
DI, SP
; SAVE THIS NUMBER
OUT
PPI_PORT, AL
; ENABLE TIMER
EPL: REPT
25
; PUSH THE REGISTERS
DB
60H
ENDM
MOV
</>
O
; PUT THE STACK BACK
LOOP
EPL
; LOOP UNTIL DONE
MOV
AL, BL
; RESTORE CONTROL VALUE
OUT
PPI_PORT, AL
MOV
SS, DX
; RESTORE ORIGINAL STACK
MOV
SP, BP
STI
; START INTERRUPTS
CALL
GETJIMER
; OBTAIN FINAL COUNT
POP
DI
; RESTORE DI
POP
BP
; RESTORE BP
RET
; RETURN
_WEMPTIME
ENDP
, ***************************************************************
.DEMPTIME
; TIME EXECUTION OF PUSHA INSTRUCTION
.***************************************************************.
EVEN
DB
?
PU8LIC _DEMPTIME
_DEMPTIME
PROC NEAR
PUSH
BP
SAVE FRAME
PUSH
DI
SAVE DI
MOV
BP, SP
CALL
SETUP_TIMER
SET UP TIMER
MOV
AX, [8P+6]
GET COUNT ARGUMENT
CWD
MAKE DOUBLE WORD
MOV
CX, 200
DIV
CX
DIVIDE BY MOVS/LOOP
MOV
CX, AX
IN
AL, PPI_PORT
GET CURRENT CONTROL
MOV
BL, AL
SAVE IN BL
OR
AX, 1
SET TIMER ENABLE BIT
CLI
STOP INTERRUPTS
MOV
DX, SS
SAVE STACK SEGMENT
MOV
SS, EMMBASE
PUT STACK IN EMM
MOV
SP, 800
SET SP FOR PUSHES
MOV
DI, SP
SAVE THIS NUMBER
OUT
PPI_PORT, AL
ENABLE TIMER
EDL: REPT
25
PUSH THE BIG REGISTERS
DB
66H, 60H
ENDM
END MACRO
MOV
SP, DI
PUT THE STACK BACK
LOOP
EDL
LOOP UNTIL DONE
MOV
AL, BL
RESTORE CONTROL VALUE
OUT
PPI_PORT, AL
MOV
SS, DX
RESTORE ORIGINAL STACK
MOV
SP, BP
STI
START INTERRUPTS
CALL
GET_TIMER
OBTAIN FINAL COUNT
POP
DI
RESTORE DI
POP
BP
RESTORE BP
RET
RETURN
_DEMPTIME
ENDP
.***************************************************************
_BEMMTIME
TIME EXECUTION OF REP MOVSB INSTRUCTION
i***************************************************************
PUBLIC _BEMMTIME
_BEMMTIME
PROC NEAR
PUSH
BP
; SAVE FRAME
MOV
BP, SP
PUSH
DS
; SAVE DS
PUSH
ES
; SAVE ES
PUSH
SI
; SAVE SI
PUSH
DI
; SAVE DI
CALL
SETUP_TIMER
; SET UP TIMER
MOV
DI, EMMBASE
; SET UP EMM BASE ADDRESS
MOV
ES, DI
MOV
DS, DI
XOR
DI, DI
; ES:DI •> TEST SEGMENT
XOR
SI, SI
; DS:SI •> TEST SEGMENT
MOV
CX, [BP+4]
; GET COUNT ARGUMENT
IN
AL, PPI_PORT
; GET CURRENT CONTROL
MOV
BL, AL
; SAVE IN BL
OR
AX, 1
; SET TIMER ENABLE BIT
CLI
; STOP INTERRUPTS
CLD
; SET FORWARD DIRECTION
OUT
PPI_PORT, AL
; ENABLE TIMER
REP MOVSB
; RUN TEST
MOV
AL, BL
; RESTORE CONTROL VALUE
OUT
PPI_PORT, AL
STI
; START INTERRUPTS
CALL
GETJIMER
; OBTAIN FINAL COUNT
POP
DI
; RESTORE DI
POP
SI
; RESTORE SI
POP
ES
; RESTORE ES
POP
DS
; RESTORE DS
POP
BP
; RESTORE BP
RET
; RETURN
_BEMMTIME
ENDP
.A**************************************************************,
_WEMMTIME
TIME EXECUTION OF REP MOVSW INSTRUCTION
***************************************************************
PUBLIC _WEMMTIME
WEMMTIME PROC NEAR
PUSH
BP
SAVE FRAME
MOV
BP,
SP
PUSH
DS
SAVE DS
PUSH
ES
SAVE ES
PUSH
SI
SAVE SI
PUSH
DI
SAVE DI
CALL
SETUP_TIMER
SET UP TIMER
MOV
DI,
EMMBASE
SET UP EMM BASE ADDRESS
MOV
ES,
DI
MOV
DS,
DI
XOR
DI,
DI
ES:DI -> TEST SEGMENT
XOR
SI,
SI
DS:SI -> TEST SEGMENT
MOV
CX,
[BP+4]
GET COUNT ARGUMENT
IN
AL,
PPI_PORT
GET CURRENT CONTROL
MOV
BL,
AL
SAVE IN BL
OR
AX,
1
SET TIMER ENABLE BIT
CLI
STOP INTERRUPTS
CLD
SET FORWARD DIRECTION
OUT
PPI
_PORT, AL
ENABLE TIMER
REP MOVSW
RUN TEST
MOV
AL,
BL
RESTORE CONTROL VALUE
OUT
PPI
PORT, AL
STI
START INTERRUPTS
CALL
GET
_TIMER
OBTAIN FINAL COUNT
POP
DI
RESTORE DI
POP
SI
RESTORE SI
POP
ES
RESTORE ES
MARCH 1987
85
Windows, Data Entry, Help Management, Menus,
Text Editing, plus...
ii
Vitamin C
It’s good for your system!
The Vitamin C Difference
With Vitamin C t your applications come
alive with windows that explode into view!
Data entry windows and menus become a snap,
and context sensitive pop-up help messages
are nearly automatic.
With VCScreen, you’ll save time by inter¬
actively painting windows and forms so what
you see is what you get! Then, one button
generates C source cdde ready to plug into
your program and link with Vitamin C.
Easy enough for the beginner. Versatile
enough forthe professional. Vitamin C’s open-
ended design is full of "hooks’’ so you can
intercept and "plug-in” special handlers to
customize or add features to most routines.
Of course, Vitamin C includes all source
code FREE, with no hidden charges. It always
has. That means you’ll have everything you
need to adapt to special needs without spending
hundreds of dollars more.
Windows
Create as many windows as you like with
one easy function. Vitamin C automatically
takes care of complicated tasks like saving
and restoring the area under a window.
Options include titles, borders, colors, pop¬
up, pull-down, zoom-in, 4-way scrolling, scroll
bars, sizes up to 32 k, text file displays editing,
cursor display, and more.
Unique built-in feature lets users move and
resize windows during run-time via a definable
key.
Access the current window by default or a
specific window any time, even if if s hidden or
invisible. Save and load windows on disk for
more versatility!
Data Entry
Flexible dBase-like data entry and display
routines feature protected, invisible, required,
and scrolling fields. Picture clause formatting,
full color/attribute control, selection sets, single
field and full screen input, and unlimited data
validation via standard and user definable
routines. That means you aren’t locked into
one way of doing things.
Vitamin C even provides true right-to-left
input of numeric fields with dynamic display of
separators & currency symbols.
High Level Functions
Use our intergrated help management,
multi-level menus, and text file routines, or
build your own handlers using Vitamin C’s basic
windowing and data entry routines.
Standard help handler provides context
sensitive pop-up help messages any time the
program awaits key strokes. The help text file
is stored on disk and indexed for quick access.
So easy to use that a single function initializes
& services requests by opening a window,
locating, formatting, displaying, and paging
through the message.
Multi-level “Macintosh” & “Lotus” style
menus make user interfaces and front ends a
snap. Menus can call other menus, functions,
even data entry screens, quickly and easily.
Text editor windows can be opened for
pop-up note pads, memofields, orgeneral pur¬
pose editing. Features include insert, delete,
word wrap, and paragraph formatting.
VCScreen
Screen Painter/Code Generator
Just as Vitamin C’s reusable functions speed
your programming, VCSreen makes it even
faster and easier by automatically generating
C source code for your data entry screens!
With VCScreen’s interactive screen editor,
you actually draw your forms. You can define
input, output and constant fields, headings,
boxes, lines and even a window for the form to
run in.
What you see is what you get If you don’t
like the position of an object, just "pick it up”
with the cursor and move it! Changing colors,
attributes, copying, and deleting is just as
easy.
VCScreen generates readable C source
code. It declares variables with names you
provide and can even generate structures.
With VCScreen choosing the right functions,
parameters and sequences, and Vitamin C
supplying the functions to choose from, you can
stop worrying about semi-colons, matching
braces* and calling conventions and concentrate
on creating your application!
30 Day
Money Back
Guarantee
Better than a brochure. More than a demo
disk. If you’re not satisfied, simply return
the package within 30 days and receive
a full refund of the purchase price.
Vitamin C .$225.00
Includes ready to use libraries, tutorial,
reference manual, demo, sample, and example
programs, and quick reference card For IBM PC
and compatibles. Specify Microsoft, Lattice,
Computer Innovations, Aztec, Mark Williams,
Wizard, DeSmet, or Datalight C compiler AND
compiler version number when ordering.
VitaminCSource ... FREE*
•Free with purchase of Vitamin C
VCScreen.$99.95
Requires Vitamin C and IBM PC/XT/AT or
true compatible.
ALL ORDERS:
SHIPPING: $3 ground, $6 2-day air, $20
overnight, $30 overseas. Visa and Master Card
accepted. All funds must be U.S. dollars drawn
on a U.S. Bank. Texas residents add 7V\% sales
tax.
For Orders or More information, Call...
( 214 ) 245-6090
UPDATE
JE
SE2
; TRY AGAIN IF BUSY
OR
AH, AH
; CHECK FOR ERROR
JNZ
SENO
; JUMP ON ERROR
MOV
EMMBASE, BX
; SAVE THE BASE
SE3:
MOV
AH, 42H
; FUNCTION 3:
INT
67H
; GET NUMBER OF PAGES
CMP
AH, 82H
; CHECK FOR BUSY
JE
SE3
; TRY AGAIN IF BUSY
OR
AH, AH
; CHECK FOR ERROR
JNZ
SENO
; JUMP ON ERROR
OR
BX, BX
; CHECK UNALLOCATED PAGES
JZ
SENO
; JUMP IF NONE AVAILABLE
SE4:
MOV
AH, 43H
; FUNCTION 4:
MOV
BX, 1
; ALLOCATE ONE PAGE
INT
67H
CMP
AH, 82H
; CHECK FOR BUSY
JE
SE4
; TRY AGAIN IF BUSY
OR
AH, AH
; CHECK FOR ERROR
JNZ
SENO
; JUMP ON ERROR
MOV
PID, DX
; SAVE THE PROCESS ID
SE5:
MOV
AH, 44H
; FUNCTION 5:
XOR
BX, BX
; MAP THE PAGE TO
XOR
AL, AL
; FRAME BASE
INT
67H
CMP
AH, 82H
; CHECK FOR BUSY
JE
SE5
; TRY AGAIN IF BUSY
OR
AH, AH
; CHECK FOR ERROR
JNZ
SENC
; JUMP ON ERROR
XOR
AX, AX
POP
DI
; RESTORE REGISTERS
POP
SI
POP
ES
POP
BP
RET
; RETURN 0
SENC:
MOV
AH, 45H
; FUNCTION 6:
INT
67H
; CLOSE EMM
CMP
AH, 82H
; CHECK FOR BUSY
JE
SENC
; TRY AGAIN IF BUSY
SENO:
MOV
AX, OFFFFH
POP
DI
; RESTORE REGISTERS
POP
SI
POP
ES
POP
BP
RET
; RETURN -1
SETUP
EMM
ENDP
***************************************************************,
_FINISH_EMM
CLOSE
THE EMM DEVICE
RELEASE
THE PAGE
*************************************************************** ,
PUBLIC _FINISH_EMM
.
FINISH
_EMM
PROC NEAR
PUSH
BP
; SAVE REGISTERS
PUSH
ES
PUSH
SI
PUSH
DI
SE6:
MOV
AH, 45H
; FUNCTION 6:
MOV
DX, PID
; CLOSE EMM
INT
67H
CMP
AH, 82H
; CHECK FOR BUSY
JE
SE6
; TRY AGAIN IF BUSY
POP
DI
; RESTORE REGISTERS
POP
SI
POP
ES
POP
BP
RET
; RETURN
FINISH
_EMM
ENDP
***************************************************************.
SETUP_
TIMER
SET UP
THE TIMER FOR
MAXIMUM
COUNT, TO TIME A RUN
*************************************************************** .
SETUP_TIMER
PROC NEAR
PUSH
AX
; SAVE AX
IN
AL, PPI_PORT
; STOP THE TIMER
AND
AL, OFCH
OUT
PPI_PORT, AL
MOV
AL, 0B4H
; INITIALIZE THE TIMER
OUT
TIMER_CTRL, AL
MOV
AL, 0
; CLEAR THE COUNT
OUT
TIMER2_PORT,
AL
NOP
POP
DS
; RESTORE DS
POP
BP
; RESTORE BP
RET
; RETURN
WEMMTIME
ENDP
***************************************************************•
_DEMMTIME
TIME EXECUTION OF REP MOVSW
INSTRUCTION
****************************************************************
PUBLIC _DEMMTIME
.
DEMMTIME
PROC NEAR
PUSH
BP
; SAVE FRAME
MOV
BP, SP
PUSH
DS
; SAVE DS
PUSH
ES
; SAVE ES
PUSH
SI
; SAVE SI
PUSH
DI
; SAVE DI
CALL
SETUP_TIMER
; SET UP TIMER
DB
066H
; 32 BIT OPERANDS:
XOR
DI, DI
; CLEAR EDI
DB
066H
; 32 BIT OPERANDS:
XOR
SI, SI
; CLEAR ESI
DB
066H
; 32 BIT OPERANDS:
XOR
CX, CX
; CLEAR ECX
MOV
DI, EMMBASE
; SET UP EMM BASE ADDRESS
MOV
ES, DI
MOV
DS, DI
XOR
DI, DI
; ES:DI •> TEST SEGMENT
XOR
SI, SI
; DS:SI -> TEST SEGMENT
MOV
CX, [BP+4]
; GET COUNT ARGUMENT
IN
AL, PPI_PORT
; GET CURRENT CONTROL
MOV
BL, AL
; SAVE IN BL
OR
AX, 1
; SET TIMER ENABLE BIT
CL I
; STOP INTERRUPTS
CLD
; SET FORWARD DIRECTION
OUT
PPI_PORT, AL
; ENABLE TIMER
DB
066H
; 32 BIT OPERANDS:
REP MOVSW
; RUN TEST
MOV
AL, BL
; RESTORE CONTROL VALUE
OUT
PPI_PORT, AL
ST I
; START INTERRUPTS
CALL
GET_TIMER
; OBTAIN FINAL COUNT
POP
DI
; RESTORE DI
POP
SI
; RESTORE SI
POP
ES
; RESTORE ES
POP
DS
; RESTORE DS
POP
BP
; RESTORE BP
RET
; RETURN
DEMMTIME
ENDP
.***************************************************************
_SETUP_
.EMM
SET UP
EXPANDED MEMORY
AND
RETURN THE BASE
.***************************************************************
PUBLIC _SETUP_
.EMM
SETUP EMM
PROC NEAR
PUSH
BP
; SAVE REGISTERS
PUSH
ES
PUSH
SI
PUSH
DI
MOV
AH, 35H
; GET EMM INTERRUPT
MOV
AL, 67H
; VECTOR
INT
21H
MOV
AX, ES
; CHECK FOR VALID BASE
MOV
BX, CS
; MUST BE BELOW CS
CMP
AX, BX
JA
SENO
; JUMP IF NOT GOOD
MOV
DI, 000AH
; OFFSET OF DRIVER NAME
LEA
SI, EMM_NAME
; COMPARE STRING
MOV
CX, 8
; LENGTH OF STRING
CLD
REPE
CMPSB
; COMPARE THE NAME
JNE
SENO
; JUMP IF NO GOOD
SE1: MOV
AH, 40H
; FUNCTION 1:
INT
67H
; GET MANAGER STATUS
CMP
AH, 82H
; CHECK FOR BUSY
JE
SE1
; TRY AGAIN IF BUSY
OR
AH, AH
; CHECK FOR ERROR
JNZ
SENO
; JUMP ON ERROR
SE2: MOV
AH, 41H
; FUNCTION 2:
INT
67H
; GET PAGE FRAME BASE
CMP
AH, 82H
; CHECK FOR BUSY
MARCH 1987
87
UPDATE
TIMER2_P0RT, AL
RESTORE AX
RETURN
SETUP TIMER
TAKE THE COUNT FROM THE TIMER
SAVE REGISTERS
GET LOW BYTE OF TIME
AL, TIMER2 PORT
AL, TIMER2_PORT
GET HIGH BYTE
TIME IN AX
CORRECT FOR COUNT-DOWN
XCHG AL, AH
RESTORE REGISTERS
RETURN
GET TIMER
_NDP_PRESENT
CHECK IF 80287 IS PRESENT
PUBLIC _NDP_PRESENT
NDP_PRESENT PROC NEAR
PUSH BP
MOV BP, SP
SAVE FRAME
BIOS EQUIP CHECK
IS 80287 BIT SET?
NO MEANS NO 80287
RETURN TRUE
JMP NDPEXIT
XOR AX,AX
ALL DONE
SET AX TO FALSE
RESTORE SP
NDPEXIT:MOV
RESTORE BP
RETURN
NDP PRESENT ENDP
_CPU_TYPE
CHECK IF CPU IS 8088/8086, 80188/80186, 80286, 80386
.***************************************************************.
PUBLIC _CPU_TYPE
_CPU_
TYPE
PROC NEAR
PUSH
BP
SAVE FRAME
MOV
03
CO
"U
PUSHF
XOR
AX, AX
ZERO AX
PUSH
AX
POPF
TRY TO PUT 0 INTO FLAGS
PUSHF
POP
AX
SEE WHAT WENT IN FLAGS
AND
AX,OFOOOH
MASK OFF HIGH FLAG BITS
CMP
AX,OFOOOH
WAS HIGH NIBBLE ONES
JE
_8X
IS 8086 OR 8088
PUSH
SP
SEE IF SP IS UPDATED
POP
BX
BEFORE OR AFTER IT IS
CMP
BX, SP
PUSHED
JNE
_18X
MOV
AX,OFOOOH
TRY TO SET HIGH BITS
PUSH
AX
POPF
IN THE FLAGS
PUSHF
POP
AX
LOOK AT ACTUAL FLAGS
AND
AX,OFOOOH
ANY HIGH BITS SET?
JE
_286
IS 80286
_386:
MOV
AX, 03
IS AN 80386
JMP
CTEXIT
_286:
MOV
AX, 02
IS AN 80286
JMP
CTEXIT
_18X:
MOV
AX,01
IS AN 80188/80186
JMP
CTEXIT
_8X:
MOV
AX, 00
IS AN 8088/8086
CTEXIT: POPF
RESTORE ORIGINAL FLAGS
MOV
SP, BP
RESTORE SP
POP
BP
RESTORE BP
RET
RETURN
CPU
TYPE
ENDP
_TEXT
ENDS
END
Cross Compile,
68000 / 08 / 10/20
Features:
■ Full, Standard C
■ Easy to Use Compiler Options
■ Complete User Documentation
■ Global Code Optimization
■ Optional Register Allocation
Via Coloring
■ ROMable and Reentrant Code
■ Comprehensive Royalty Free
Run-time Library
■ Floating Point Library Routines
■ Intermix MCC68K C with
ASM68K Assembly Language or
Microtec PAS68K Pascal
■ Optional Assembly Language
Listing Intermixed with MCC68K
C Source Line Number
■ Symbolic Debug Capability
The Microtec MCC68K C Cross Compiler
is a complete implementation of the
‘C’programming language as de¬
fined in The C Programming
Language by Kernighan and
Ritchie with extensions.
MCC68K emits highly optimized
assembly language code lor
the Microtec ASM68K
Motorola compatible
assembler.
The Microtec MCC68K A
package includes the
compiler, relocatable
macro assembler,
linking loader,
run-time li¬
brary, and
compre¬
hensive
A
guide.
Host computers include: DEC VAX, DG MV-
Series, Apollo, IBM PC and PC-compatibles..
We're Functional and Fast and Serious
about our products. We've been providing
flexible and economical solutions for soft¬
ware developers since 1974.
Beginning with product concept, through
development, quality assurance, andpost¬
sales support - Quality, Compatioility
and Service are the differences which set
Microtec Research apart from others.
If you're a serious software developer, shop¬
ping for software development tools, call or
write today for more information:
800 - 551 - 5554 ,
In CA call (408) 733-2919.
3930 Freedom Circle, Suite 101, Santa Clara, CA 95054
Mailing Address: PO. Box 60337, Sunnyvale, CA 94088
W//A MICROTEC ®
M I RESEARCH
Unretouched frozen video image in
full color. Captured with ATronics’
Professional Image Board.
Professional
Image
Board
The new Professional Image Board is a PC
board which allows an ordinary home video
camera (color or black-and-white) to be
plugged into an IBM personal computer or IBM
compatible. Now, live, fast action scenes can be
instantly captured in full color and frozen. The
frozen pictures can be computer enhanced
feature by feature and stored on a floppy or
hard disk. The frozen pictures can also be
transmitted to any remote computer in the
world via modem. The Professional Image
Board also allows you to perform cut and
paste operations with most popular software.
SPECIFICATIONS
• Works with IBM PC/XT/AT or compatible
• Capture one picture in 1/60 second from
standard NTSC signal source (Regular video
camera, VCR, etc., or RGB camera)
• Shows picture on analog monitor or TV
• Resolution 512 x 256 capable of 32K
different colors
• Adding text on the captured picture
• Mixing external image with internal image in
live mode
• Image captured by PIB can be displayed on
EGA monitor
• Adapter available for European standard TV
ATI
ATronics
International Inc.
"Delcavi rfeluaMeeci r 7ee^Moi»^
1830 McCandless Dr. Milpitas CA 95035
(408) 943-6629
CIRCLE NO. 238 ON READER SERVICE CARD
PHOTOGRAPH*WALTERI ARRIMORE/BIAKF.Sl.EE-L\NE
T raditionally, PC software devel¬
opers have not had many choices
for debugging their high-level lan¬
guage programs. Most debuggers work
in assembly language code; the pro¬
grammer must be familiar with intricate
details of how the compiler generates
code in order to debug programs suc¬
cessfully. Commands are given to the
debugger through a command line
using cryptic incantations. In an age of
mice, pull-down menus, and windows,
most debuggers are throwbacks to the
days of DOS 1.0.
CodeView is Microsoft Corpora¬
tions attempt to advance the state of
the art in debuggers. CodeView pro¬
vides debugging at both the source and
assembly language levels. For users
who are familiar with assembly-level
assistance, CodeView is compatible with
both Microsoft’s DEBUG and SYMDEB
line-oriented debuggers. For high-level
language programmers, CodeView
allows almost complete debugging at
the source-code level.
Assembly-level debuggers such as
DEBUG always work at tine level of
machine instructions (either hexadeci¬
mal or assembly language mnemonics)
and memory locations. Although appro¬
priate for programs written in assembly
language, DEBUG is not well suited to
higher-level languages. The original
structure of the program is obscured by
compilation; at best, the compiler may
produce a listing that shows the assem¬
bly language code generated from the
source. In this case, the programmer
must understand not only the source-
level program but also the resulting as¬
sembly language code that is produced
by the compiler.
SYMDEB, currently provided by
Microsoft with its Macro Assembler ver¬
sion 4.0, extends the capabilities of
DEBUG by adding limited support for
debugging at the source-code level. The
programmer can step through one
source-code line at a time. Symbols for
function names and global data can be
used instead of absolute memory ad¬
dresses. However, the debugger does
not know the size or type of data desig¬
nated by the symbol; the programmer
must provide that information.
CodeView also allows debugging at
the source-code level, but instead of
examining bytes or words in memory,
the programmer can examine variables
as their program-defined types: integers,
floats, strings, and structure members.
Instead of stopping on an assembly lan¬
guage instruction, the programmer can
stop on source lines. Both global and
local variables may be examined, Code¬
View' knows the size and structure of
variables in the program.
Often, an assembly-level debugger
is not necessary for application pro¬
gramming. Even for systems program¬
ming done in C, source-level debugging
Window-oriented
CodeView heralds a
new generation of
products with full
debugging capabilities
at both the source code
and assembly levels.
CODEVIEW
PHOTO 1: CodeView Screen Layout
File Search View Run Watch Options Calls Trace? Go?
■ : • ~ ] entab.c }=
0) colpos > 88 : 0
1) *p_ch : 0
2 ) 8888:0190 88 08 88 88 08 88 08
80 68 80 .
93:
ini colpos:
/* current column position *S
94:
int ch:
/» current character */
95:
char *p ch:
/* current char and pointer to it «/
96:
register char «p space;
/* start of current whitespace */
9?:
char buf[HAXTABS+21;
/* buffer for text betueen tabstops *
28:
99:
colpos = l;
100:
p ch = sbufiei;
101 :
P space - NULL;
102:
103:
while ( (ch = getc(fp))
♦= EOF ) f
184:
*P_ch+ + = ch;
/* add to line buffer *S
105:
106:
/* Renenber spaces
in case there is a run of then */
>up? colpos > 88
>u? *p ch
H P 0:408
10
The major components of the CodeView screen in window
mode are, from top to bottom, the menu bar, the watch
window, the display window, and the dialog window.
PHOTO 2: Mixed Source/Assembly Listing
0EE
entab.exe
==='■=*”===- ■■■ ~ --=j eiltab.C ! | ~ ' ' ~ f
0) colpos > 88 : 8
1) *p ch 0 iWliIfft:)!
2) 4275:0F84 00 08 00 00 88 08 08 80 00 '—
AX = 8F84
BX -* 8F84
CX = 81A8
n¥ - hot?
1083:01A9 56
PUSH
SI
vA - uOLZ
ft SP - 8F88
99: colpos = l;
3? = 1806
4883:01/*) C746F88180
HW
Word Ptr [colpos],0081
;BR8
SI = 1020
108: P ch = abuf[03;
DI = 10EE
4083:01AF 3D867EFF
LEA
AX,Uord Ptr [BP-08821
DS = 4275
4083:81B3 8946FE
H0U
Uord Ptr [p_chl,AX
ES = 4275
181: p_space - NULL;
SS = 4275
4883:01B6 BE0880
H0U
P_space,8800
K CS - 4883
103: while ( (ch
= getc(fp)) ?= EOF ) {
IP = 81B6
4083:0189 8B5E84
M0U
BX,Uord Ptr [fpl
: novrflow
4083:01BC FF4F02
DEC
Uord Ptr [BX*821
up
4883:01BF 837F8280
CttP
Uord Ptr [BX*82L*00
fl enable
i pos i tiyc
>up? colpos > 88
[j not zero
>u? «p ch
no auxcy
H P 0:488 1 10
odd
>y2
no carry
>tpb buf 1 10
>
For more detailed debugging, a mixed source and assembly
listing may be used instead of straight source code. The
watch window displays the active trace and watchpoints.
is possible. CodeView hides the assem¬
bly language details in most cases.
The CodeView debugger is distrib¬
uted as part of Microsoft’s C version 4.0
and FORTRAN version 4.0, and supports
all memory models. It is not available
separately. Microsoft C and FORTRAN
are the only languages that currently
support the extended debugging infor¬
mation required for CodeView. This
review was done with CodeView and
the Microsoft C compiler.
The Microsoft C compiler is fully
compatible with the Kernighan and
Ritchie standard. It provides five mem¬
ory models and includes numerous li¬
brary routines. It supports mixed lan¬
guage programming among other Mi¬
crosoft language implementations and
contains a built-in optimizer. (Version
3.0 of the Microsoft C compiler was re¬
viewed in “The State of C,” William J.
Hunt, January 1986, p. 82.)
To use CodeView, a user adds two
switches in the compiler invocation:
MSC filename.c /Zi /Od ;;;
where the /Zi switch has the compiler
include additional symbol, line number,
and debugging information for the
linker, and the /Od switch turns off op¬
timization. (Including optimization re¬
moves the correlation between source-
code lines and object-code lines.)
After compiling, linking is invoked
using the CodeView option:
LINK /CO filename ;;;
It is very important to use the version
of LINK that is provided with the Micro¬
soft C compiler, because previous ver¬
sions do not comprehend the /CO
(CodeView) option.
This link creates a .EXE file with
the requisite debugging information.
The .EXE file also executes without the
debugger present. Because the default
level of optimization is disabled by the
/Od option, the resulting .EXE file may
be larger and run more slowly than a
nondebugging version of the file. The
debugging information included in the
.EXE file for CodeView’s use also in¬
creases the size of the .EXE file.
The .EXE file header reveals to
CodeView the presence of debugging
information. This header is not present
in .COM files, so the source-level
debugging option is not available for
them. However, .COM files can be
debugged using assembly-level com¬
mands. Similarly, a .EXE file compiled
or linked without the options that are
shown above will lack information for
source-level debugging; however, Code¬
View can still be used.
Unfortunately, CodeView cannot be
used to debug Microsoft Windows pro¬
grams. The version of SYMDEB that is
provided with the Microsoft Windows
Software Development Kit should be
kept for this purpose. Considering the
size of both CodeView and Windows,
memory limitations probably would
prohibit use of CodeView even if it
were available. Approximately 200KB of
memory was required to debug a 100-
line program with CodeView.
LAYOUT OF THE SCREEN
CodeView can be used in either of two
modes. The first is SYMDEB-compatible
sequential interface. At a prompt, the
user types in a command, and the out¬
put is shown on the lines that follow.
This mode would normally be used
only for a non-supported display or a
non-IBM-compatible, MS-DOS comput¬
er. In the second mode, window mode,
CodeView displays several windows of
information at once. Photo 1 shows the
layout of the CodeView screen in win¬
dow mode. The top of the screen is
reserved for the menu bar.
Below the menu bar is an area
called the watch window , which dis¬
plays the current values of selected vari¬
ables or expressions. If no values are
being watched (for example, whenever
CodeView is started), this window is not
present on the screen.
The display window , an area used
for the source code, appears below the
watch window (or menu bar if no
watch window is present at the time).
This area is also used for the assembly
language code or another text file. Pho¬
to 2 shows the display window with the
assembly code option selected.
At the bottom is the dialog win¬
dow. Dialog commands, which are a
superset of SYMDEB commands, are en¬
tered in this window, and CodeView’s
responses for some queries are given
here. This area by default is small.
CodeView retains a buffer of previous
requests and responses in the dialog
window through which the user can
scroll. The sizes of the display and dia¬
log windows can be changed easily.
To the right side of the screen is
an optional vertical register window.
Showing the registers and flags, it can
be opened or closed with a keystroke.
Assembly-level debugging, shown in
photo 2, illustrates the layout of the
register window. When debugging at
source level, the register window is
usually not needed.
92
PC TECH JOURNAL
DAN BRICKLMS DEMO P ROGRAM
HAS EVERYONE TALKING.
1 -**9ht VV,r,ner
Dan Bricklin’s Demo Program is a new concept in prototyping
and demo-making. With DEMO you can conceptualize programs,
describe them to others, refine their functionality and
human interface, and finally, teach users the finished
product. The two most common applications are to
prototype a product before it is written and to
produce a demonstration or tutorial about an OF THE
st arti
put of
th G
Vaov*
existing product or system.
■ Create, edit and view a series of slides
■ Each slide is 80x25 characters
■ All 256 characters supported, including special characters
■ All 256 attributes (color, underline, blink, etc.)
■ Each slide can be the image of what a
running program looks like
■ Characters graphics only, no bit-mapped
graphics
■ Slides are stored compacted, allowing often
hundreds and hundreds of slides to fit in
memory for instant access (given enough RAM)
■ Complete set of editing commands,
including cut, paste and move
■ Line, box and special character commands
built-in
■ Includes background “CAPTURE" program
for importing screens from running programs
■ Learn-mode macro facility
■ Run command switches from slide to slide
under automatic control
Options include:
□ Adjustable delay between each slide
□ Wait for key or optional timeout
□ Display different slide next depending
upon keystroke
□ Produce tones
□ Switch to another set of slides in
another file
■ Runtime-only version of program included,
along with license to make up to 50 copies
(see License for details).
■ Additional volume runtime licenses available.
■ Requires 256k IBM PC/compatible, DOS 2.0
or later. Supports Monochrome, Color/graphics,
and EGA Adaptors (text mode only).
Thousands of developers are designing
better products faster and producing more
effective demonstrations using Dan Bricklin's
Demo Program. You can, too. Act now!
ORDER YOUR COPY TODAY
** ONLY $74.95
^ 617-332-2240
Send check to Software Garden, Inc.
Dept. TD, P.O. Box 373, Newton Highlands,
MA 02161. Massachusetts residents add $3.75.
Outside the U.S.A. add $15.00.
-PCiecvU° uT '
>o y °“ “se
Vou’n . ° nc e,
how yT° nd er
“EverV^Jcot
software ap p\v
copy
Pe
Soft*
“1W W"
$s$
"Apparently has a
hit on its hands with .. •
a development tool
for personal computer
software that has won
rave reviews from
early usersr
—Coroputerworid, 4/7/86
SOFTWARE
GARDEN
Jl
“h
_ pC \Nee>>
CIRCLE NO. 142 ON READER SERVICE CARD
CODEVIEW
SEEING CODEVIEW
CodeView was tested on an AT with a
Hercules Graphics Card, an AT with an
IBM Enhanced Graphics Adapter (EGA),
and an AT&T PC6300 with an AT&T ad¬
apter compatible with the IBM Color
Graphics Adapter (CGA) and mono¬
chrome display. Both AT configurations
were run under DOS 3.1, and the
PC6300 with AT&T’s MS-DOS 2.11.
On the ATs, CodeView recognized
that DOS was being used and automati¬
cally entered the window mode when it
was started On the PC6300, the /W
(window) and /B (black-and-white dis¬
play) options had to be used to start
CodeView in window mode.
Screen output is a difficult area for
debuggers such as CodeView. When the
program being debugged is not run¬
ning, CodeView uses the entire screen
to display debugging information.
Whenever the program being debugged
is started, a separate screen environ¬
ment is provided for it. When the de¬
bugger resumes control (such as after a
breakpoint), the program’s screen is
saved so that CodeView can reclaim the
screen for debugging use.
If all of the application’s screen
output were done through the BIOS,
CodeView could detea a BIOS video
call (INT 10H) and restore the pro¬
gram’s screen only when needed. In
reality, many programs write direaly to
display adapter memory, avoiding the
BIOS. CodeView could check every
instruction for writes to display mem¬
ory, but this would significandy slow
program execution.
Instead, CodeView provides a good
seleaion of compromises for handling
screen output. On a monochrome
adapter or an EGA/CGA program that
changes display modes (for example, a
graphics program), CodeView maintains
a buffer of each screen in memory.
Whenever the program is run, its
screen is copied from the buffer into
display memory. When CodeView takes
control again, the screen is saved back
into the buffer, and the CodeView
screen is copied into display memory.
This procedure causes the display to
jump back and forth between the appli¬
cation and CodeView screen in a dis¬
concerting manner.
With the CGA and EGA, CodeView
uses two display pages in the video
adapter memory: one for itself and the
other for the program output. It flips
between the two pages whenever the
program is started, producing a much
smoother transition between screens.
The EGA also can be used in 43-line
mode. The greater number of lines on
the debugging screen in 43-line mode
is helpful, but the annoying jumping be¬
tween the CodeView screen and a 24-
by-80 program screen becomes even
more pronounced.
If a program is being debugged in
a section of code where screen output
is not being performed, the program¬
mer can have CodeView disable the an¬
noying screen-swapping that occurs
during program execution. If it is care¬
fully used, disabling screen-swapping
can make CodeView much easier to
work with. However, if the program
does write directly to the screen, the
output either overwrites part of Code-
View’s display or it disappears as Code¬
View updates its display.
The best option for debugging is
one that is not mentioned in the Micro¬
soft manual: using two displays. A Code¬
View command line switch, /2, places
Mo, commands can be
executed by selecting from
the pull-down menu bar,
pressing function keys, or by
typing the commands.
program output on the default display
(seleaed by the DOS MODE com¬
mand), and CodeView’s output appears
on the second display. Information -
about this feature is contained in the
README.DOC file supplied on disk,
rather than in the documentation.
USING CODEVIEW
CodeView is started with the command:
CV options executablefile arguments
Options are provided to selea window
mode, sequential mode, black-and-white
display, screen flipping and/or swap¬
ping, or IBM EGA 43-line mode. One
useful option allows a sequence of
commands to be executed when Code¬
View is started.
The name of the executable file to
be debugged (including the .COM or
.EXE extension) is given after any op¬
tions. If the program expects any com¬
mand-line arguments, they can be given
after the executable file name.
Typically, the executable file is
debugged in the same direaory in
which the source files reside. If Code¬
View cannot find the source files used
to create the executable file, it prompts
for the file’s location. If a source file is
not available, only assembly language
debugging can be performed.
Every user should be able to find a
comfortable interface with CodeView.
Most commands can be executed by
selecting from the pull-down menu bar,
pressing function keys, or typing com¬
mands in the dialog window. Menu
seleaions can be made with a Micro¬
soft-compatible mouse or by using Alt-
key combinations.
A mouse is used just as it is in
Microsoft Windows. Items in the menu
are selected by pointing to the main
menu item, pressing a mouse button,
and moving the selection bar to the de¬
sired item. Releasing the mouse button
causes the selection to be made. The
display and dialog windows have scroll
bars that can be used to scroll through
the source/assembly language listing or
through previously entered dialog com¬
mands. The display/dialog separator line
can be moved by the mouse to adjust
the relative sizes of the two windows.
The mouse also can be used to change
any flag in the register window.
Microsoft has provided a new
MOUSE.SYS driver with CodeView that
can save and restore the mouse cursor,
so that both CodeView and the program
being debugged can use the mouse.
Unfortunately, CodeView may cause
problems for mice that do not use the
Microsoft driver. Logitech Inc.’s latest
Logimouse software has been made
compatible. At the time of this review,
however, Mouse Systems Corporation
did not have PC Mouse software that
worked with CodeView.
For keyboard use, the menu items
have been named so that pressing the
Alt key plus the first letter in the name
will open the menu. Pressing the Alt
key plus the first letter of the item in
the opened menu will select that item.
Commonly used commands are dupli¬
cated in the fimaion keys, which allow
actions such as set/clear breakpoints,
single-step, and “run until this instruc¬
tion is reached’’ to be performed with a
single keystroke.
The familiar SYMDEB command-
driven interface is available through the
dialog window. The major changes and
additions made to the SYMDEB com¬
mands are listed below:
• The E (enter) command, when typed
with no arguments, executes the pro¬
gram in slow motion, highlighting
each instruction as it is executed If
watchpoints and/or registers are being
displayed, they are also updated.
• Commands have been added to ma¬
nipulate tracepoints and watchpoints.
94
PC TECH JOURNAL
• The 7 command can be used to dis¬
play detailed information about the
8087 or 80287 numeric coprocessor
registers and internal state.
• In many of the commands that re¬
quire values, a C-style expression of¬
ten can be used. The expression can
include program variables, register
names, and constants.
• In keeping with the high-level debug¬
ging nature of CodeView, the default
base for constants is 10. For hexadeci¬
mal constants, the C convention of
preceding the number with Ox should
be used. Alternatively, the default base
for constants can be changed to 16
with the N (numeric radix) command.
• The W (write) command of DEBUG
and SYMDEB is not supported.
DEBUG or SYMDEB must be used for
modifying executable files or patching
absolute disk addresses.
• The S (Search) command is not sup¬
ported by CodeView.
EXECUTING CODE
Program execution begins with a func¬
tion key, menu, or dialog command and
stops whenever a breakpoint, watch-
point, or tracepoint is encountered. The
user can specify that the execution be
done in slow motion or that it stop on
the current cursor line (a temporary
breakpoint). The current line of code
being executed is identified by reverse
video highlighting.
The Trace command lets the user
step through the program one or more
lines at a time. It steps into C functions
for which there is source code, if the
display window contains C code. If
CodeView is at the assembly level, the
Trace command moves into any func¬
tion or interrupt except a DOS inter¬
rupt 21. CodeView moves through a
macro’s expansion only at the assembly
level, and die source line expansion is
not available. After each step, all watch
expressions are updated.
The Program Step command, does
not enter C or assembly language pro¬
cedures. While it is similar to the Trace
command, it steps over the called pro¬
cedure to the next source line in the
current procedure.
Once entered, a procedure must
be stepped through or a breakpoint
must be set in the calling procedure.
This can be done by making use of the
Call Stack command.
If the program enters an endless
loop or if a problem is encountered
during execution, control can be re¬
gained through Ctrl-C or Ctrl-Break. If
the program has reset these keys, Code¬
View can be stopped with the ATs Sys-
Req key. CodeView does not abort; it
gracefully returns control to the user.
At any point, the program can be
restarted, which starts execution from
the beginning of the program, as if the
debugger has just been entered. Break¬
point and watch expression definitions
still are retained.
Often while debugging, the user
needs to know the calling sequence and
parameters, as well as the relation
among procedures, not just the proce¬
dures themselves. The calls menu or
Stack Trace command shows the calling
sequence to the present execution loca¬
tion. Photo 2 shows the CodeView
screen with the calls menu pulled
down. The menu is dynamic, showing
the current function at the top and the
calling procedures below. Main() is
always the last function shown in the
calls menu. The values of the parame¬
ters are also given in the menu.
Unlike the other menus, the calls
menu cannot be used by entering the
combination of Alt key and the first let-
: ter of the menu item. The user must
| move the selection bar up or down the
menu and then press the Enter key.
This moves the cursor to the source
code at the calling point (or the calling
instruction if called from* assembly lan¬
guage). The calling parameter list can
then be examined. If the uppermost
menu item is selected, CodeView re¬
turns to the current position.
SEARCHING CODE
Examining code is a straightforward
procedure in CodeView. The user is
able to search through the code with
the search menu or dialog commands
or by using the cursor keys.
The view menu or the F3 key
allows the user to move from C to as¬
sembly language and back. The assem¬
bly language code is mixed code; the C
source is contained in the assembler,
where possible, as comment lines.
Photo 2 shows the mixed source/assem¬
bly format. The C source comments can
be turned off completely to get straight
assembly language without symbolic
references. When source code is not
available, the user sees only assembly
language instructions in the standard
Unassemble format from DEBUG. This
is true for all .COM files.
The Search function lets the user
find a variable, label, or expression in
the code. After selecting the Find or
Label menu item, a dialog box appears,
and then the search string is specified
by entering a regular expression.
Regular expressions are standard in
the UNIX environment; they form a
comprehensive but enigmatic search
language. Regular expressions can
include wild cards and special search
characters. An example might be
"buffer, which searches for the word
buffer at the beginning of a line. In the
simplest case, a normal text string can
be entered. To look for the occurrences
of the C library function fopen(), the
user can type fopen. However, to look
for buffer[i], the user would need to
know to enter buffer\[i]. Similarly, the
* does not work quite the same way as
at the DOS level. Regular expressions
are very strong in their searching and
matching capabilities, and their inclu¬
sion is quite useful. The CodeView
manual includes an excellent appendix
on regular expressions.
Two types of searching can be per¬
formed with CodeView. The first is a
text search that uses a regular expres¬
sion to find any string in the source file.
Through menu selections, CodeView
can perform a text search both forward
and backward in the source file. With a
dialog command, only forward searches
are possible. Oddly, the search-back¬
ward menu selection does not allow a
search string to be entered; it uses the
string entered for the last forward-
search command. Because searching
wraps around to the top of the file (in¬
stead of giving a “not found” message),
a search-forward command may find an
occurrence at an earlier line in the file.
This mirrors the behavior of searches in
UNIX-style editors, but may take some
users by surprise.
For example, a search for the
string strcpy would find the first men¬
tion of strcpy in the source file starting
from the cursor position, whether it is a
function call, a comment, or a declara¬
tion. Subsequent searches will find later
occurrences of strcpy, until the search
wraps around to the first occurrence.
The second form of search is a
label search, which finds the definition
of a function or label. The name given
for the label must be complete and can¬
not be a regular expression. If a label
has been defined in C, CodeView finds
that location, changing source files if
necessary. If, however, the label is de¬
fined in assembly language or in execu¬
table code, then CodeView changes to
assembly language to display the code.
For example, a search for strcpy as a
label would move to the location of the
C library routine, and the debugger
would change to assembly level.
Modifying code can be done only
at the assembly level. The Assemble
Dialog command assembles 8086-family
mnemonics. Some programmers find
MARCH 1987
95
CODEVIEW
this command invaluable; they use it to
jump to a patch area where they can
enter temporary bug-fixing code. In¬
struction mnemonics for the 8087 and
80287, however, are not supported by
the in-line assembler.
DATA EXAMINATION
CodeView provides programmers with a
familiar environment in which to exam¬
ine data using several methods. The
first is the old DEBUG command for
dumping memory. Entering dialog com¬
mands such as
D DS:0xlF0 230
produces a hexadecimal dump of that
portion of memory. CodeView follows
SYMDEB in having ASCII, integer, word,
real, and several other types of dumps.
Virtually all of the familiar SYMDEB
commands have been included in
CodeView—for example, the Display
Expression dialog command. (This facil¬
ity is also available through the Evaluate
menu item on the view menu.) The
Display Expression command displays
the value of a subset of C expressions.
An expression includes constants, vari¬
ables, most C operators, and some type
casts (structure or union type casts are
not allowed). For example, the follow¬
ing command
? global_var+5
prints the value 13 in the dialog win¬
dow if global_var is currendy 10.
At a simple level, the Display
Expression command operates as a cal¬
culator. It is also possible to determine
the address of a variable using the &
operator. In addition, the result can be
formatted in a manner similar to the
printf statement. For example, the dia¬
log command, ? 100, x, asks for the
value of 100 decimal in hexadecimal.
The x asks that result be printed as a
hexadecimal. All of the normal printf
types are possible: decimal integer, hex,
octal, float, exponential, string, charac¬
ter, and various longs. Most importandy,
the value of a variable ccan be deter¬
mined in C notation with the Display
Expression command. The expression
? ptr — >member[index], d
is perfecdy valid. Individual address cal¬
culations are unnecessary.
Because the C assignment and
increment operators are supported in
expressions, display expression also can
be used to modify data. This point is
not well made in the manual. In fact,
the manual does not refer to this useful
feature in the chapter on modifying
data. Although the E (enter) command
of SYMDEB is also supported, the
advantage of Display Expression for
changing data is that the type and size
of the data are known, whereas Enter
requires the programmer to specify the
type and size.
The command ? varl = 5 sets
varl to 5. In a similar manner,
? stmctB.var2 + +
increments the current value of var2 in
structB. Display Expression does not al¬
low function calls to be executed. Be¬
cause C strings are supported by library
function calls, rather than directly in the
language, the only way to modify a
string is to use the Enter command:
E string_name “the rain”
This creates a small inconsistency in the
way data are modified.
CodeView also has facilities for
examining data through watch expres¬
sions. The ability to evaluate an expres¬
sion or variable whenever a breakpoint
or tracepoint is reached is available
through the watch menu or a dialog
command. This evaluation occurs auto¬
matically whenever CodeView is active.
Watch expressions are shown in
the watch window directly below the
menu bar, sharing the available screen
space with the display window. There¬
fore, the more watch expressions that
are used, the smaller the display win¬
dow. Four or five watch expressions are
a reasonable number for a 25-line
screen; the EGA’s 43-line mode is espe¬
cially helpful when several watch
expressions need to be displayed.
Limitations on the visibility of vari¬
able names in CodeView can make
entering expressions somewhat awk¬
ward. Watch expressions for a proce¬
dure’s local variable cannot be entered
until the procedure is called. In fact, at
least one line of code in the procedure
must be executed before any watch ex¬
pressions .can be entered.
To know the value of a variable in
a calling procedure, the user must pre¬
fix the variable name with the proce¬
dure name:
W? procedure_ 1. variable_A
If this is not done, CodeView does not
know variable^A’s value within proce¬
dure^, even in a procedure that is
called by procedure^ 1. As a matter of
convenience, CodeView should allow
the user to set the locality for variables
. in the watch expression through the lo¬
cation of the cursor in the source.
CodeView should also allow watch ex¬
pressions to be set for functions that
have not been reached, so that a watch
expression could be set up before de¬
bugging actually starts.
BREAK, TRACE, AND WATCH
Three facilities are provided to stop
execution of a program whenever user-
defined conditions occur: breakpoints,
tracepoints, and watchpoints. Break¬
points are also found in DEBUG and
SYMDEB. CodeView allows the user to
set breakpoints visually with the F9 key,
a mouse button, or a dialog command.
The source line is then highlighted on
the screen (see photo 1).
As many as 20 breakpoints can be
set simultaneously. They remain in
force until they are canceled or until
the programmer leaves the debugger.
They are retained when the program is
restarted. Breakpoints can be temporar¬
ily disabled and then reenabled.
When the program is about to exe¬
cute a code statement that contains a
breakpoint, CodeView stops, sets the
display window to the appropriate point
in the code, and updates any watch
expressions. The user can then enter
any CodeView commands. By appro¬
priately placing breakpoints and watch
expressions, users easily can gain snap¬
shots of their programs.
An additional feature of break¬
points is that, through the dialog com¬
mand, CodeView can stop at the wth
iteration of a code line. The dialog
command BP .211 75 causes CodeView
to stop when line 211 is executed for
the 75th time. This is ideal for stopping
near the end of a loop’s execution.
Through a dialog command, the user
also can ask for the automatic execution
of other commands when a breakpoint
is triggered. For example,
BP .1034 “? i; ? j = 4”
prints out the value of i and resets j to
4 every time the breakpoint is encoun¬
tered in the program.
The second form of control is the
tracepoint. It stops program execution
whenever a memory location (or a
range of memory up to 128 bytes) is
modified. The expression defining the
area of memory to be traced can be
either a program variable name or a set
of absolute memory addresses. Vari¬
ables and memory ranges being traced
appear in the watch window.
Watchpoints, the third and most
powerful form of control, are expres¬
sions that are evaluated after every pro¬
gram instruction is executed. If the
expression evaluates to any value ex¬
cept zero, the program is stopped.
Watchpoints share the watch window
with tracepoints and watch expressions.
96
PC TECH JOURNAL
CODEVIEW
Watch expressions display only the
value of a variable, whereas watchpoints
can cause the program to be stopped
when their expressions are not zero.
Watchpoints are shown in high-intensity
text in the watch window to differen¬
tiate them from the similar-looking
watch expressions. The combined total
number of watchpoints, tracepoints, and
watch expressions cannot exceed 10.
The cost of these features is
reduced execution speed of the pro¬
gram being debugged. Breakpoints are
relatively inexpensive unless they are
contained in a loop with a very high
pass count. Tracepoints and watchpoints
slow the program down by a factor of
approximately 1,000. Depending on the
program, this may be significant. Pro¬
grams that deal with external events
(for example, serial ports, mice, or real¬
time clock interrupts) may not tolerate
the delay. (CodeView can take advan¬
tage of debugging hardware that reduces
the overhead of tracepoints and watch¬
points. Atron’s MiniProbe, an example of
this kind of hardware, will be reviewed
in an upcoming Product Watch.)
POWERFUL FUNCTIONS
Among CodeView’s features are com¬
mands to set tabs, reset register values,
copy CodeView output to both file and
screen, and pause. The shell menu item
allows the execution of DOS commands
and a second COMMAND.COM.
One example of the power of the
I/O redirection and pausing commands
is the CodeView demonstration disk.
The entire demonstration is orches¬
trated by using script files read in by
CodeView. A script file is useful for
quickly executing a program to the
point where it was failing when it
requires intermediate breakpoints and
patches. All of the breakpoints and
patches could be done in the script file.
CodeView’s Load command loads
ASCII files that contain no special for¬
matting characters. This is useful for
viewing C header files that have been
included by the source program.
The on-line help screens are disap¬
pointing. Relatively little information is
present; in general the screens serve as
syntax reminders. For a complex prod¬
uct, CodeView offers very few screens.
CodeView’s written documentation,
with the exception of the Display
Expression command, is good. The
manual, which currently takes up one-
half of one of the three Microsoft C
manuals, includes sections on using the
compiler and linker with CodeView,
CodeView options, screen layout, and
menus. In addition, each command has
ISN’T IT A PITY,
Everything Isn’t As
Accommodating As
TM TM
c-tree / r-tree
FILE HANDLER
Performance and Portability
For all the time you devote to developing
your new programs, doesn't it make sense to
insure they perform like lightning and can be
ported with ease?
c-tree: Multi-Key ISAM Functions
For Single User, Network, & Multi
Tasking Systems
Based on the most advanced B+ Tree routines
available today, c-tree gives you un¬
matched keyed file accessing performance and
complete C Source Code. Thousands of profes¬
sional C programmers are already enjoying
c-trees royalty-free benefits, outstanding
performance, and unparalleled portability.
Only FairOom provides single and multi-user
capabilities in one source code package,
including locking routines for Unix, Xenix, and
DOS 3.1., for one low price! In addition,
c-tree supports fixed and variable record
length data files; fixed and variable length key
values with key compression; multiple indices
in a single index file; and automatic sharing of
file descriptors.
r-tree: Multi-File Report Generator
r-tree builds on the power of c-tree
to provide sophisticated, multi-line reports.
Information spanning multiple files may be
used for display purposes or to direct record
selection. You can develop new reports or
change existing reports without programming
or recompiling and can use any text editor to
REPORT GENERATOR
create or modify r-tree report scripts
including the complete report layout. At your
option, end users may even modify the report
scripts you provide.
Unlimited Virtual Fields; Automatic File
Traversal
r-tree report scripts can define any number
of virtual fields based on complex computational
expressions involving application defined data
objects and other virtual fields. In addition,
r-tree automatically computes values
based on the MAX, MIN, SUM, FRQ, or AVG of
values spread over multiple records, r-tree
even lets you nest these computational func¬
tions, causing files from different logical levels
to be automatically traversed.
Unlike other report generators, r-tree allows
you to distribute executable code capable of
producing new reports or changing existing
reports without royalty payments, provided the
code is tied to an application. Your complete
source code also includes the report script
interpreter and compiler.
How To Order
Put FairOom leadership in programmers utilities
to work for you. Order c-tree today for
$395 or r-tree for $295. (When ordered
together, r-tree is only $255). For VISA,
MasterCard and C.O.D. orders, call 314/445-
6833. For c-tree benchmark comparisons,
write FairOom, 2606 Johnson Drive, Columbia,
MO 65203.
O Complete C Source Code & No Royalties!
Xenix is a registered trademark of Microsoft Corp. Unix is a registered trademark of AT&T.
CIRCLE NO. 119 ON READER SERVICE CARD
MARCH 1987
97
“How to protect your software
by letting people copy it.”
By Dick Erett, President of Software Security
Hard Disk Installation : Simply copy program disk
to hard disk usin g DOS Command- Copy A:*.* C:
Program Back-ups : You may make as many copies of
the program diskette as you wish.
Data Back-ups : Use normal back-up and restore
commands, including backing up sub-directories containing
program files.
Networks : This product may be
*works. Follow the same installation
on page 102 of this manual. The Block
with the normal operation of any
Soon all software installation procedures will be as straightforward as this.
The only difference will be whether you include the option to steal your
product or not.
Inventor and
entrepreneur,
Dick Erett,
explains his
company’s
view on the
protection of intellectual
property._
crucial point that
even sophisticated
software develop¬
ment companies and the
trade press seem to be miss¬
ing or ignoring is this:
Software protection must
be understood to be a
distinctively different
concept from that com¬
monly referred to as
copy protection.
Fundamentally, software
protection involves devising
a method that prevents
unauthorized use of a
program, without restricting
a legitimate user from
making any number of
additional copies or prevent¬
ing program operation via
hard disk or LANs.
Logic dictates that mag¬
netic media can no more
protect itself from misuse
than a padlock can lock itself.
Software protection must
reside outside the actual
storage media. The technique
can then be made as tamper
proof as deemed necessary.
If one is clever enough,
patent law can be brought
to bear on the method.
Software protection is at
a crossroads and the choices
are clear. You can give
product away to a segment
of tne market, or take a
stand against the theft of
your intellectual property.
.. giving your software
away is fine ...”
We strongly believe that
giving your software away
is fine, if you make the
decision to do so. However,
if the public’s sense of ethics
is determining company
policy, then you are no
longer in control.
We have patented a device
that protects your software
while allowing unlimited
archival copies and unin¬
hibited use of hard disks and
LANs. The name of this
product is The BLOCKS
The BLOCK is the only
patented method we know
of to protect your investment.
It answers all the complaints
of reasonable people con¬
cerning software protection.
In reality, the only people
who could object are those
who would like the option
of stealing your company’s
product.
“...eliminating the ratio¬
nale for copy-busting... 99
Since The BLOCK allows
a user to make unlimited
archival copies the rationale
for copy-busting programs
is eliminated.
The BLOCK is fully pro¬
tected by federal patent law
rather than the less effective
copyright statutes. The law
clearly prohibits the produc¬
tion of work-alike devices
to replace The BLOCK.
The BLOCK attaches to
any communications port of
virtually any microcomputer.
It comes with a unique
customer product number
programmed into the circuit.
The BLOCK is transpar¬
ent to any device attached to
the port. Once it is in place
users are essentially unaware
of its presence. The BLOCK
may be daisy-chained to
provide security for more
than one software package.
Each software developer
devises their own procedure
for accessing The BLOCK
to confirm a legitimate user.
If it is not present, then the
program can take appro¬
priate action.
. .possibilities...
limited only by your
imagination ... 99
The elegance of The
BLOCK lies in its simplicity.
Once you understand the
principle of The BLOCK,
hundreds of possibilities will
manifest themselves, limited
only by your imagination.
Your efforts, investments
and intellectual property
belong to you, and you have
an obligation to protect
them. Let us help you safe¬
guard what’s rightfully yours.
Call today for our brochure,
or a demo unit.”
1 offware
ecurity inc.
870 High Ridge Road Stamford, Connecticut 06905
203 329 8870
CIRCLE NO. 189 ON READER SERVICE CARD
CODEVIEW
a short section with examples. An excel¬
lent, separate index is provided for the
CodeView section in the manual.
The demonstration disk, “Learning
Microsoft CodeView,” provides a very
good overview to the product and
shows some of the ways that it can be
used. The demonstration disk is cur¬
rently available separately from Micro¬
soft and can be freely copied and dis¬
tributed. It is recommended.
Microsoft provides a technical sup¬
port hotline at no extra cost, and tele¬
phone support for CodeView is good.
Microsoft technical support people are
able to answer questions quickly.
As a full-featured visual debugger,
CodeView is professional and solid. It
can handle source code and assembly
language in all memory models fur¬
nished by Microsoft C. In addition, the
interface for third-party debugging
hardware can be used to enhance the
performance of CodeView’s watchpoints
and tracepoints.
As with any product, CodeView can
be improved. Documentation for the
display expression and dual-display fea¬
tures should be clarified. A method for
presetting watch expressions before a
procedure is reached would be a wel¬
come addition. Compatibility with mem¬
ory-resident programs should be added.
CodeView is not friendly to pop-up pro¬
grams such as Borland’s SideKick. Dur¬
ing testing, calling SideKick from within
CodeView caused the AT to freeze up,
requiring a reboot.
Features such as the execute mode
and watch expressions provide quite a
powerful method for monitoring a pro¬
gram’s behavior in detail at the source
code or assembly level. CodeView’s fea¬
tures for source-level debugging make
it much less intimidating to the pro¬
grammer who is not familiar with as¬
sembly language or machine instruc¬
tions. While providing debugging at
source level, CodeView has not sacri¬
ficed the ability to perform the more
traditional low-level debugging. 1 "ilimim
Microsoft Corporation
16011 Northeast 36th Way
P.O.Box 9098017
Redmond, WA 98073-9717
206/882-8080; 800/426-9400
C Compiler: $450
CIRCLE 343 ON READER SERVICE CARD
The best new
from one of the
own publishers.
C COMPILER
C+ +
ADVANTAGE C+ +
• New object-oriented language lets
you develop large and complex
programs more productively.
• Write reliable, reusable code that
is easier to understand and
maintain.
• Fully compatible with existing C
programs and tools.
• All the benefits of C gpM.l
without its limitations. /aM*
• Available for Lattice and jjCgg0A«
Microsoft C compilers. v
ADVANTAGE C
• Newest technology based on Al
and advanced design.
• Unmatched execution speed;
full control of compilation
environment.
• Advanced optimization routines.
• Over 250 library
functions; full
ANSI C library.
• Microsoft C
compatibility.
We make the best
software even better.
MULTITASKING
TimeS/icer
• Create multitasking and real-time
applications in C now!
• No need to interface with the OS.
Tasks can be created, suspended or
terminated at run-time.
• Optimize processor usage and
transparency.
• Compatible with Lattice C,
Microsoft C, ADVANTAGE C + + and
object-oriented
programming.
• Header files for C and
assembly language.
LINKER
ADVANTAGE Link
• Fastest, most powerful PC-DOS
overlay linker.
• First linker to take full advantage
of EMS.
• Supports 53 commands. \$jm
• Compatible with
Microsoft CodeView
and Pfix Plus.
After 10 years of publishing soft¬
ware, we know what's important
to you. We're committed to full
service that goes beyond just selling
you the best software at competitive
prices. Our expert staff can help you
choose the right programs and
provide full technical support. Count
on Lifeboat for the complete solu¬
tion to all your programming needs.
Call for the latest
products from:
Blaise ■ Computer innovations«
CompuView • Essential • GSS •
Gimpel ♦ Greenleaf • Informix •
Lattice • Media Cybernetics ■
Microsoft • Oregon Software •
Periscope • Phar Lap • Phoenix •
Rational Systems • Roundhill •
SoftCraft - and more
can 1-800-847-7078
in ny 914 - 332-1875
or your local Lifeboat Authorized Dealer.
GRAPHICS
ADVANTAGE Graphics
• Complete C programming
graphics library.
• Create bar and pie charts
with one command.
• No royalties or run¬
time fees.
The Full-Service Source for Programming Software.
UttBQAT
55 South Broadway
Tarrytown, NY 10591
Telex #510-601-7602
FORTRAN 4.0 Compiler: $450
CIRCLE 344 ON READER SERVICE CARD
Mark S. Ackerman is a software engineer
currently working on Project Athena at the
Massachusetts Institute of Technology.
INTERNATIONAL SALES OFFICES
Australia/New Zealand:
Charlton Distributors
Phone: (64) (09) 766-361
Canada: Scantel Systems
Phone: (416) 449-9252
England: Grey Matter, Ltd.
Phone: (44) 364-53499
System Science, Ltd.
Phone: (44) (01) 248-0962
France: Compusol
Phone: (45) 30.07.37
Italy: Lifeboat Associates
Italia
Phone: (02) 464601
Japan: Lifeboat, Inc.
Phone (03) 293-4711
Spain: Micronet, S.A.
Phone: (34) 1-262-3304
The Netherlands: SCOS
Automation BV
Phone: (31) 20-10 69 22
West Germany: MEMA
Computer GmbH
Phone: (69) 34-7226
Omnitex
Phone: (76) 23-61820
MARCH 1987
CIRCLE NO. 173 ON READER SERVICE CARD
99
9:02: “A database manager? How many months will this take?
2:19: “From now on I’m taking the easy’ way out.
What it does is hard
How it does it is easy.
Ahe reason most people use a database
manager is to make work easier But most
database managers are so difficult to use
they end up making work harder
That’s why many companies that had
already standardized on complex sys¬
tems like dBASE® are re-standardizing on
DataEase.™
DataEase. No database manager that
does as much is easier
DataEase is easy because you don’t
have to program. Menus with easy to
understand commands like “cut” and
“paste” lead you through the process of
setting up forms, files and reports.
And DataEase is just as powerful as
much more complex systems. But the
power of DataEase becomes available as
you need it. So the transition from building
simple applications to building complex
ones is smooth. And easy
DataEase also makes it easy to use
information stored on other computers.
Because the only thing that changes is
where the data comes from. DataEase
LAN™ and DataEase Connect™ automat¬
ically get the information you need. No
matter where it is-on another PC, LAN
server minicomputer or mainframe.
Creating complex business graphics
is easy with DataEase GrafTalk™ And
DataEase Developer™ has everything you
need to document and encrypt your appli¬
cations and build demonstration disks.
And, of course, it’s easy too.
The DataEase Family They can do
everything. And everything they do is easy
Send us the coupon for more about
the DataEase Family including a free
DataEase demonstration disk. Or call
1-800-334-EA5E, or 203-374-8000.
I PCTJ 3/87 1
I DataEase International, Inc. i
12 Cambridge Drive, Trumbull, CT 06611
I 1-800-334-EA5E I
' □ Please send me more information about ■
| □ DataEase □ LAN □ Connect I
0 □ GrafTalk □ Developer 1
| □ Please send a free DataEase demonstration disk, j
• □ Please have a DataEase representative call. I
Name___Title_ *
' Company_Phone_ ■
I Address__ !
| City-State_Zip_ |
| No. of PCs on site D1-10 Dll-50 D51+ I
□ IBM PC/XT/AT □ IBM COMPATIBLES DWANG DDEC DOTHER
I-1
Software Solutions, Inc. is now DataEase International, Inc.
DATAEA5
If it was hard to use
we would have called it DataHard.
Canada (416) 231 -1270 • United Kingdom 01-554-0582 • Italy 2-836-0097 • Benelux (31.) 73-414855 (Holland) • Scandinavia (47) 71-46166 (Norway)
Switzerland 985152 • West Germany/Austria 89-461-3257 (Munich) • Australia (03) 699-7255 • Brazil 11-881-0600
CIRCLE NO. 144 ON READER SERVICE CARD
dBASE is a trademark of Ashton-Tate
© 1987 DataBase International. Inc.
AUGIE HANSEN
Mapping
PC Address
Space
Memory and I/O
address maps can
help developers
identify the available
memory and port
locations for appli¬
cation programs.
T he Intel 8086 family of micropro¬
cessors, including the 8088 and
80286 chips that are the back¬
bones of the IBM PC product lines, can¬
not operate in a vacuum. They must
communicate with entities outside
themselves to perform useful work:
memory, both RAM and ROM; and ex¬
ternal devices such as display systems,
disk drives, and keyboards.
The microprocessor accesses mem¬
ory and external devices in two primary
ways. It uses a set of address leads to
form either memory addresses or I/O
addresses (called ports). The 8086/88-
based machines have 20 address leads,
permitting direct addressing of up to
1MB of memory. Figure 1 shows the ba¬
sic 20-bit address bus used by the PC,
PC/XT, and PCjr, Machines based on the
80286 use an additional 4 address leads
for a total of 24, yielding a maximum
directly addressable memory of 16MB.
All of the 8086 family microproces¬
sors are also capable of addressing up
to 64K ports. This separate address
space is accessed via some of the same
address leads used to access primary
memory, but the processor operates in
a different mode when reading and
writing ports. The microprocessor can
access either memory or a port, but not
both at the same time. Instructions such
as MOV use the address leads to access
memory, but IN and OUT instructions
cause the processor to access ports in
the I/O address space. IBM chose to use
only the first 10 address leads (A0-A9)
when addressing ports, so PCs nomi¬
nally have access to only 1,024 ports.
Certain areas of the memory and
I/O spaces of a PC are reserved for sys¬
tem uses. The uses are, for the most
part, common across the PC family, with
some variations. One of the problems
faced by developers is knowing which
memory locations and ports are used
by a given machine and which are avail¬
able for use by application programs.
The PC, PC/AT, XT, and PCjr (and most
compatibles) can be treated identically
for certain classes of system data and
access points, but variations have been
introduced that must be accounted for
in program designs.
The memory and I/O address maps
in this article are designed to aid pro¬
grammers and hardware designers by
making memory and port information
readily available. The maps provide an
overview of the allocation of memory
and I/O address spaces in the PC ma¬
chines. Areas of particular interest are
expanded to show additional detail.
102
PC TECH JOURNAL
COMPUTER GRAPHIC* DOVJACOBSON
I/O MAPPING
Only the first 640KB of the 1MB of
address space can be populated with
RAM; this is the maximum amount sup¬
ported by current versions of DOS. The
rest of the address space is dedicated to
system-related items, such as ROM
BIOS, BASIC, expansion ROM for add-in
boards, and video display memory. In
the user area of memory, system data
and interrupt vectors, device drivers,
and the operating system (which grow
with each new release) occupy a signifi¬
cant amount of space. Add to that a gen¬
erous amount of space for the omnipre¬
sent resident utilities and a user-friend¬
ly shell or task switcher, and it is a
wonder that any room is left for appli¬
cation programs to load and run, even
on machines that are equipped with the
full complement of memory.
Figure 2 is a coarse memory ad¬
dress map showing the basic memory
allocations envisioned by IBM. (All of
the maps in this article use the conven¬
tion of increasing addresses moving
down the page and from left to right.)
To run DOS, the primary RAM area
must start at 0, be’ contiguous, and be
large enough to run the operating sys¬
tem and its extensions (device drivers
and other resident code) and to load
and run the user’s application program
code and data. Isolated blocks of mem¬
ory are not accessible to DOS except
through special programs (RAM disk,
print spooler, and so on), which are
usually implemented as DOS device
drivers or terminate-and-stay-resident
(TSR) programs.
BASIC (except in the PC/r, which
uses cartridge BASIC) and the ROM
BIOS reside at the high end of the PC’s
memory space. The ROM BIOS is the
firmware portion of the PC’s basic in¬
put/output system, the low-level inter¬
face between the computer and devices
that serve the user.
Versions of the ROM BIOS starting
with the introduction of the XT use a
feature called ROM SCAN to look for
additional ROM (hard disk and other
special BIOS modules) in the expansion
ROM area. This enables an XT, for ex¬
ample, to boot from a hard disk instead
of diskette drive A:. Any executable
code found in the expansion ROM area
is given control after the primary boot¬
strap sequence completes. Control
eventually returns to the BIOS initializa¬
tion routine, which either loads DOS
(or another operating system) or
defaults to BASIC.
An area of special interest is the
lowest portion of RAM. The low mem¬
ory map presented in figure 3 shows
the groupings of information in the re-
PCs based on the 8088 microprocessor use a 20-bit address bus. Machines based
on the 80286 use a 24-bit address bus, yielding a 16MB address space.
Only the first 640KB of the PC’s 1MB address space can be populated with RAM;
the rest is dedicated to ROM, display buffers, and other system-related items.
Interrupt vectors point to the routines that provide wide range of services. Mem¬
ory locations in the range of 400H to 5FFH hold ROM BIOS and DOS-related data.
104
PC TECH JOURNAL
gion from address OH to 5FFH. The in¬
terrupt vectors point to the routines
that provide a wide range of services on
demand. Memory locations in the range
of 400H to 5FFH hold ROM BIOS and
DOS-related data. These locations are
useful because they contain system con¬
figuration data, vital disk, keyboard, and
video information, and miscellaneous
status flags and values.
Some of the information, such as
equipment flags, in the BIOS data area,
shown in figure 4, is available with DOS
and BIOS interrupts and should be ob¬
tained in that way to guarantee portabil¬
ity among PC models and versions of
DOS. Other information, however, can
be obtained only by reading locations
directly. For example, two bytes provide
keyboard status information. The first is
at 417H. The value it holds is bit-signifi¬
cant to indicate the status of special
keys, such as Caps Lock and Num Lock.
The information can be obtained by
calling BIOS interrupt 16H, function
number 2 (Shift status). A second byte
at 418H indicates whether one of the
special keys is currently in a pressed or
released state, plus some PC/r-specific
key information. This information is not
available through BIOS calls and must
be read directly.
Reading information directly usu¬
ally is not a recommended procedure.
However, IBM says that it intends to
maintain the structure and organization
of the BIOS data area in its future PCs,
so that programs can safely access the
locations without becoming obsolete
because of new equipment and operat¬
ing system versions.
Above the transient program area
(TPA) beginning at memory address
A0000H is a reserved area for video
adapters. Figure 5 shows the memory
allocations for various video adapter
configurations. Only a small sliver, 4KB
in all, beginning at address B0000H is
occupied by the standard IBM Mono¬
chrome Display and Graphics Adapter.
The Color Graphics Adapter (CGA)
starts at B8000H and extends upward
for 16KB. Both a monochrome adapter
and a CGA can be installed in a PC, but
programs that depend on the standard
video services provided by DOS and
ROM BIOS can access only one display
at a time. Programs that write to both
display types simultaneously are using
direct-screen access methods that are
potentially troublesome to some PC
operating environments (TopView,
Windows, GEM). Quarterdeck’s Desq-
View does not seem to be affected.
The region from A0000H to
AFFFFH, although marked RESERVED by
Some of the information in the BIOS data area is available via DOS and BIOS in¬
terrupts and should be obtained in that way in order to guarantee portability.
FIGURE jj Display Memory Allocations
The 128KB area beginning at memory address AOOOOH is reserved for video adapt¬
ers. Only 4KB is occupied by the standard IBM monochrome display adapter.
IBM, was used by some vendors as an
extension of the TPA; DOS can be in¬
structed to use RAM that is installed
there provided it is contiguous with the
lower regions of RAM. Several cards
place an isolated block of memory in
the region for use as a print spooler or
RAM disk. These rogue memory alloca¬
tions now conflict with applications that
expect to find an Enhanced Graphics
Adapter (EGA) starting at AOOOOH.
The EGA can contain up to 256KB
of memory mapped into planes that can
be allocated in several ways, (see “The
EGA Standard”, John T. Cock'erham,
October 1986, p. 48). When the EGA is
masquerading as either a monochrome
adapter or a CGA, its memory allocation
starts at the expected monochrome
adapter or CGA addresses and occupies
32KB. When configured to operate in
pure EGA modes, the memory alloca¬
tion starts at AOOOOH and occupies
either 64KB or 128KB depending on
the selected buffer address option.
The maps specified by the over¬
view in figure 6 show the I/O addresses
that are currently allocated and re¬
served for future allocation by IBM.
They are designed to help developers
understand the mystery of the PC’s I/O
address space. Each row in a map (fig¬
ures 7-12) represents 16 I/O addresses
(ports), starting at the number shown at
the left end of the row. Each figure
maps 256 consecutive I/O addresses.
The first 3 I/O address maps present in¬
formation about the same block of ad-
MARCH 1987
105
I/O MAPPING
Programmers &
Developers
New
Products!
Distribute Your Demos with
No Royalties
Screen Machine creates interactive demos,
tutorials, menu systems and DOS shells. In¬
cludes a text screen editor that optionally
generates source code* and binary or text
files. Never write code for screen display
again. Capture any program’s text screens for
editing and your own use. Capture CGA com¬
patible graphics screens for BLOAD or direct
display. SAVE hundreds of HOURS of work.
Now there’s no need for separate screen and
demo software packages and no need to pay
outrageous royalties. Priced at only $79.00.
•Turbo Pascal, Mach 2 for Turbo, Assembler, dBASE II & III,
BASIC (including The Inside Track and Mach 2).
The I/O address space as defined by IBM is divided into several areas, with the first
being reserved for system board devices and the remainder for I/O channel devices.
Supercharge Turbo Pascal
Mach 2 for Turbo Pascal adds assembler
speed to your programs. 90 + subroutines,
most in assembler, give you speed and func¬
tionality you never knew was possible. No
knowledge of assembler language required.
INSTANT displays. INSTANT windows (incl.
exploding and boxed). FASTEST sort you’ve
seen. Read /write files FAST as DOS. IN¬
STANT menus, 1-2-3 horizontal and vertical
bar.
Trap A C/ A Break & DOS critical errors so no
more A)bort, R)etry or l)gnore. Emulate
BASIC PRINT USING for FAST formatted
numbers. Execute any prog, batch or DOS
command without ending program.
Read environment. Read file directory.
Get/set file attributes. Plus too many string
functions to describe here. No royalties when
you distribute COM programs. All source
code included. A true bargain at $69.00.
NOT COPY PROTECTED. 30 Day Money-Back
Performance Guarantee. Requires IBM/com¬
patible & DOS 2 +.
Order Now 800-922-3383
We welcome VISA/MC. COD US only $3.
S/H US $3, Canada $5, Elsewhere $18. GA
res. add tax and call 404-973-9272. Demo
available. Send $5 check. Refunded on direct
purchase.
We also publish Stay-Res, Mach 2 for BASIC,
The Inside Track and Peeks ’n Pokes.
MicroHelp, Inc.
2220 Carlyle Drive
Marietta GA 30062
dresses for the PC and XT, the PC/r, and
the AT because of significant differences
in the allocations in each machine. The
remaining I/O address maps are com¬
posites for the four major PC models.
For the PC, XT, and PC/r, when ad¬
dress lead A9 is low, addresses refer to
I/O ports on the system board (000H-
OFFH). Addresses in the 100H-1FFH
range are not decoded. When A9 is
high, addresses refer to ports in the I/O
channel (200H-3FFH). The AT operates
differently. It devotes the OOOH-OFFH
range to system board functions, as do
the other models, but it allows the en¬
tire 100H-3FFH range to be used by ad¬
apters in the I/O channel. To date, the
only allocation by IBM in the 100H-
1FFH block of addresses is for the AT’s
hard-disk controller at 1F0H-1F8H.
Three separate maps are presented
for the OOOH-OFFH range. Figure 7
shows PC and XT allocations; figure 8
shows only PC/r allocations; and figure
9 shows only AT allocations. The AT
claims nearly all of the I/O addresses,
having both enlarged allocations for
various support chips (timer, DMA, PIC)
and added allocations for a second in¬
terrupt controller, a second DMA con¬
troller, the realtime clock, and the num¬
eric coprocessor. CMCB at I/O address
OFOH is Clear Math Coprocessor Busy
and RMC at 0F1H is Reset Math Copro¬
cessor . A composite of the three maps
reveals a potential problem for IBM; no
free I/O ports are available in the block
assigned to system board use. Future PC
designs may need to expand the I/O ad¬
dress allocations and assign system uses
to areas previously reserved for exter¬
nal devices in the I/O channel.
The 100H-1FFH range (figure 10) is
used only in the AT and only for the
hard disk. The map, therefore, shows
many open I/O addresses in this range.
Hardware that depends on the use of
ports in this address range, however,
functions properly only in an AT or a
compatible machine. Consequently, for
compatibility across the PC family, hard¬
ware designers should try to avoid this
range of I/O addresses.
The 200H-2FFH address range (fig¬
ure 11) appears to have a lot of open
space, but it is actually a crowded
range. Communications ports, special
graphics interfaces, and hundreds of
other optional hardware devices are all
vying for very limited real estate in this
area. A full 16 ports have been reserved
for game I/O, although to date, systems
use only port 201H. When an expansion
unit is added to a PC, the 8 ports start¬
ing at 210H are used for communica¬
tions between the units.
IBM is beginning to use the block
of 48 RESERVED ports starting at port
220H. The voice communications adapt¬
er sits at port 21FH. (Three alternative
assignments are above 3FFH.)
The block of I/O addresses starting
at 278H is reserved for use by a parallel
printer. If the system is equipped with a
CIRCLE NO. 257 ON READER SERVICE CARD
106
PC TECH JOURNAL
GOODBYE, IBM
THANKS FOR THE MEMORIES
Have you ever noticed how time seems
to change everything? Fashions change.
Technology changes. Even the microcom¬
puters we use change. Maybe that’s why
so many of our customers are saying
goodbye to IBM in favor of a “good buy”
from Wells American.
rated by leading industry trade journals.
Even so, we’ve heard that some “big blue”
old-timers still worry about trading their
IBM “security” blanket for better priced,
higher performance equipment. (Remem¬
ber how difficult it was to give up your
baby blanket?) That’s why we’ve arranged
for RCA, one of the world’s largest tech¬
nical service organizations with 18,000
employees, to provide low cost, nation¬
wide maintenance for our A ★Star II.
And if that’s not enough, every unit in¬
cludes free schematics and a no risk
money-back guarantee.
Corporate Headquarters: 3243 Sunset Boulevard • West Columbia, South Caro
IBM. Personal Computer AT and AT are trademarks of Internatir i
CIRCLE NO. 124 ON READER SERVIC
ina 29169 • 803/796-7800 • TWX 510-601-2645
nal Business Machines.
t CARD
As time goes by, more and more com¬
puter users are realizing what an extraor¬
dinary value our A^Star II® truly is. It’s
the only AT class microcomputer that can
run at 6, 8, 10 and 12 MHz! It’s also the
only PC/AT compatible that’s “network
ready.” Better yet, each A^Star II now
comes with your choice of keyboards -
the original AT version or the enhanced
“RT” style. Best of all, A ★Star II prices
start at only $995!
But what about quality and support?
Don’t worry! We’ve been making micro¬
computers longer than IBM! And it shows.
Our A^Star® computers have been top
THE A^STAR II IS MADE IN THE USA.
Still need a blanket? We’ve got you
covered! Try out one of our A^Star II’s
and we’ll send you one. It’s baby blue,
monogrammed and...it’s absolutely free!
Well also include a $395 option, at no
charge, with your first A^Star II purchase.
This offer is limited, so call or write us to¬
day. Just because you’ll be saying goodbye
to IBM doesn’t mean you’ll have to say
goodbye to quality, support or security.
Besides, at least you’ll still have your
memories... and your money!
Wells American
I/O MAPPING
monochrome adapter, this becomes
LPT3; otherwise, it is treated as LPT2.
The initialization phase of the DOS
loading procedure accommodates the
hardware configuration automatically.
The secondary asynchronous communi¬
cations adapter (COM2) is allocated
eight ports beginning at 2F8H. Addition¬
al allocations may be made for serial
adapters at other I/O addresses; howev¬
er, a specially written device driver or
application code is required to access
the new, nonstandard allocations.
The range of I/O addresses from
300H-3FFH (figure 12) also is mostly ac¬
counted for with the various allocations
for network and communications adapt¬
ers and the EGA that have been added
in the last year or two. This range was
already heavily laden with assignments
for video display hardware (mono¬
chrome adapter and CGA), communica¬
tions devices of both the synchronous
and asynchronous persuasions, and the
hard-disk controller (except for the AT
hard-disk controller that was placed in
ports 1F0H-1F8H). The parallel printer
assignment starting at 378H is LPT2 if an
IBM monochrome display/printer adapt¬
er is installed or LPT1 if not.
Neither IBM nor any other organi¬
zation is making an effort to parcel out
the available I/O addresses in a coordi-
PCs require I/O addresses only for the interrupt controller, timer, and speaker
driver system devices located on the system board; quite a bit of open space ex¬
ists in this map compared to that of the AT.
Soft *Rite » LANbasic!
Soft*Rite announces a Superior three-part programmer’s tool.
Microsoft BASIC™ compatible in every place that counts. *
LANscreen
LANbasic
LANdbase
LANscreen makes the burden of defin¬
ing your database record structures one
that you will look forward to instead of
dread. Standard fields and types such
as “Money”, “Telephone” and “Date” are
one keystroke to generate. As many as
255 database structures can be related
to a single screen! Segmented data
input can be done automatically by edit¬
ing the field display. Part numbers with
spaces or dashes and slashes are auto¬
matically parsed down to the essential
raw data. Definable Upper and Lower
limits for numeric inputs along with
ACCEPT/EXCEPT input filters are stand¬
ard features. Screen Mask generation is
done with a “freestroke” approach. You
may put mask elements and data
input/output cells wherever you wish.
COLOR them too! EGA support too!
‘Drivers Installed for IBM PC-NET/MS-NET
LANbasic is your own personal solution to
powerfull data manipulation. How many times
have you got excited over some new “total''
database package only to find out (after
spending a fair amount of time and money)
that you were stuck in some corner, unable to
do some function that has become standard
in “In Business for Money’s” Basic? The
manual is 400 pages long, so we cannot fully
describe all the features, but here are a few in
ADDITION to the ones you are now used to:
★ COMDATAS 14 common areas ALWAYS
available to inside or outside, chained or
linked programs ★ Re-assignable printer
ports LPT1 -LPT4 ★ Generic filename use that
allows file and database locations to be re¬
defined outside of basic in a user-created
REDIRECTOR file, to ease multi-user system
configuation ★ USESCREEN,<1-16> ★
SCREEN IN PUT. <anyfield > ★ SCREENOUT-
PUT,<anyfield> ★ OPENDB, < remote or
local database manager> ★
DBGET, <variable from DBM, automatically
defines and dimensions in LAN basic> ★
DBPUT,<same>
LANdbase is the home for your data.
LANbasic calls are coupled to LANd¬
base via network comunications (PCnet
or ?). A single keyvalue and function
number will return a record. Multiuser
record locking is handled by simply put¬
ting an ‘X’ after the read call. (i.e.
RDDBEQUX,<argument>. Automatic
“health checking” to warn you of poor
hardware performance and lost or frag¬
mented data. “Paranoid” mode of opera¬
tion where files not accessed for some
time will be closed and reopened to
flush buffers and insure integrity. Pass¬
word, Userlevel and Data encryption
functions. Several DBM’s can be
installed in the network system to
improve performance and reliability. Tog¬
gle mode screen (printer) reporting to
record log-on or other access activites.
Bill Fairman’s tried and proven true C-
Tree(c) data management product.
Soft*Rite Multi-User Programming Tools
15381 Chemical Lane, Huntington Beach, CA. 92649
(714) 898-0525
CIRCLE NO. 186 ON READER SERVICE CARD
108
PC TECH JOURNAL
FIGURE 8: System Board Ports, PC\v
0 l 1 l 2 1 3 i ^ , 5 , 6 , 7 ,
1 8 1 9 , A , B , C , D, E, F
000
010
020
8259A PIC
030
040
8253 TIMER
050
060
8255A PPI
070
080
090
0A0
0B0
OCO
SN67496N SOUND CHIP
0D0
0E0
0F0
DISK-DRIVE CONTROLLER |
In addition to addresses for system board devices common to the PC, the PC/r
requires addresses for both its diskette drive and its sound generator.
FIGURE 9 : System Board Ports. PC/AT
8237A-5 DMA CONTROLLER #1
8259A PIC #1 (MASTER)
8254.2 TIMER
8042 (KEYBOARD)
H §|
REALTIME CLOCK AND NMI MASK REGISTER
DMA PAGE REGISTER
8259A PIC #2
8237A-5 DMA CONTROLLER #2
RESERVED
CM
CB
RMC
NUMERIC COPROCESSOR
The AT claims nearly all of the system board I/O addresses, having both enlarged
allocations for existing support devices and designated locations for new ones.
Complete
C Programs
in Half the Time,
with Instant-C™
Y ou can create programs much faster
with Instant-C than with convention¬
al programming tools. How? Because
Instant-C is a high-performance inter¬
preter, there are no compile or link
delays. Change your program, then
test it immediately. No matter how
large your program, the turnaround
time is just seconds.
“Instant-C means instant gratification.”—PC
Magazine, Editor’s Choice for best
C interpreter. 10/29/85
Powerful source-level debugging
saves your time. Conditional break¬
points, single-stepping by statement,
source code backtraces, data moni¬
toring, and many other debugging
features make it easy to wipe out bugs
quickly. Direct execution of any state¬
ment or function makes testing a
breeze.
"The resulting debugging and testing capa¬
bilities are fantastic and the detailed trace/de¬
bug/display commands make it easy.”— The
C Journal, Summer/85
Instant-C checks pointer references for
reasonableness, and checks that array
indexes are within declared bounds.
This run-time checking stops your
program as soon as errors occur, for
easiest debugging.
Not only does Instant-C help you
quickly change, test, check and debug
your code, but it runs your program
fast enough for real-time appli¬
cations.
"It is much faster than any of the other pro¬
ducts mentioned and was the only one able to
complete the standard SIEVE in a reasonable
time. Clearly, this high speed allows much
more complex problems to be attacked with
Instant-C than with any of the other products
discussed.”— Computer language, 2/86
Immediate feedback and precise
diagnostics make Instant-C great for
learning C. Full K&R and the ability to
link compiled object code and li¬
braries (Lattice and Microsoft) makes
Instant-C compatible with your existing
programs.
Instant-C makes all parts of the
programming task as fast as possible.
“Clearly, Instant-C is the performance
champion.”— PC Tech Journal, 5/86
Version 2 works with MS-DOS and
PC-DOS, and has a full 31 day money
back guarantee. Instant-C is only
$495. Order today! Call or write for
full information.
I? ti nn 1 ^ ox
l\dUUIldl Natick, MA 01760
(617) 653-6194
Systems, Inc.
CIRCLE NO. 181 ON READER SERVICE CARD
109
MARCH 1987
I/O MAPPING
FIGURE 10; / O OkmnelToi^ PC AT Only
0 | 1 | 2 | 3 | 4 1 5 | 6 1 7 | 8 | 9 | A | B | C 1 D | E 1 F
100
110
120
130
140
150
160
170
180
190
1A0
1B0
ICO
1D0
1E0
1F0
HARD-DISK CONTROLLER
—
This range of I/O addresses is used only in the AT and only for the hard disk.
Devices that depend on the use of these ports will not function properly on PCs.
nated way. With the introduction of
multiport serial boards (see “Beyond
COM2,” Augie Hansen, September 1986,
p. 68), the crowding has worsened.
Some of the multiport boards require
32 or even 64 contiguous I/O addresses,
which makes it very difficult to find a
home for them. This is why add-in
boards that allow users a wide latitude
in the selection of I/O addresses
through switches or jumpers have defi¬
nite advantages over comparable prod¬
ucts that use fixed port assignments.
EXPANDING THE SPACE
Adapter cards are free to do I/O ad¬
dress decoding using more than the ten
lines decoded by the system board and
by most of the earlier IBM adapters,
thus permitting port numbers up to
FFFFH if all 16 address lines are used.
Recently introduced adapter cards are
beginning to set the trend toward ex¬
panded I/O address space.
Expanded memory boards use two
additional address lines to obtain larger
allocations of I/O addresses (see “Ex¬
pandable Memory,” Ted Mirecki, Febru¬
ary 1986, p. 66). IBM’s Cluster Adapter
can be set to decode addresses in the
ranges of 790H-793H, 890H-893H,
1390H-1393H, or 2390H-2393H because
it decodes two additional address leads.
Some recent products, such as the ser¬
ial boards made by ESE Technologies,
use all 16 address lines to decode any
of the 64K I/O addresses that can be
presented on the address bus.
There is a catch, however. Any
board in the I/O address space that de¬
codes only the first 10 address lines will
respond to any higher address, formed
with a greater number of address lines,
that happens to present the expected
bit pattern on the lower 10 address
lines. For this reason, developers still
must be careful to avoid using previ¬
ously claimed port numbers.
The advantage to using more ad¬
dress lines is that a given available port
number, say 250H, can be multiplexed
into as many as 64 separately addressa¬
ble ports (one port specified by lines
A0-A9 multiplied by the 64 patterns that
can be specified by the upper 6 address
lines). As more and more board manu¬
facturers apply this technique, the port
congestion problem will diminish a bit,
at least in the near term.
ACCESSING MEMORY AND PORTS
The following examples show how to
read and write memory and port values.
Reading and writing PC memory would
be easier if the Intel microprocessors
had a linear address space. But because
the registers that do the addressing are
only 16-bits wide, a segment/offset
scheme is used to address memory.
Each address is specified as a segment,
an address that falls on a paragraph
boundary (a multiple of 16 bits), and an
offset into that segment. Offsets range
from OH to FFFFH. Twenty-bit addresses
are formed by shifting the segment val¬
ue left by four bit positions (effectively
multiplying it by 10H or 16 decimal)
and adding the offset to the result.
The easiest way to examine PC
memory is to load the DOS DEBUG
program and use the dump command
(D) to look at memory directly. Ad¬
dresses are specified by using the seg-
ment:offset notation. For example,
-d 400:0
would show the values of a block of
memory locations in the BIOS data
area. (The minus sign is the prompt
provided by DEBUG.) A subsequent D
command without a specified address
will bring up a display of the contents
immediately following those displayed
by the previous D command. This is a
convenient mechanism for stepping
through a range of addresses.
The DEBUG program also can be
used to alter and write byte values any¬
where in memory. The enter (E) and
fill (F) commands can alter the values
of a byte or a sequence of bytes. To ini¬
tialize the range of bytes from 200H to
300H in the current data segment, for
example, type
-f ds:200 300 0
and all bytes in the range assume the
value of 0.
The interactive memory and port
access offered by DEBUG is useful for
examining the PC’s inner workings and
testing programs under varying condi¬
tions. Working with memory and ports
from within programs is a different mat¬
ter. Assembly language and nearly all
high-level languages give programmers
a variety of tools to read and write
memory locations anywhere in the
computer’s address space.
Assembly language provides the
greatest level of machine access for pro¬
grammers. An assembly language rou¬
tine presented in “Instant Screens”
(Augie Hansen, June 1986, p. 96) per¬
forms a synchronized, intersegment
memory copy of data from a user-de¬
fined video buffer to physical display
memory. The routine uses direct port
access to handle critical timing tasks
and a string move instruction to copy
110
PC TECH JOURNAL
200
210
220
230
240
250
260
270
280
290
2A0
2B0
2C0
2D0
2E0
2F0
0 I 1 1 2 ■ 3 . 4 1 5 ■ 6 . 7 1 8 ■ 9 | A i B , c , D , E , F
GAME CONTROL
EXPANSION UNIT
VGA
RESERVED
PARALLEL PRINTER
3270-PC
RESERVED
SECONDARY ASYNCHRONOUS
COMMUNICATIONS (COM2)
This range of I/O addresses is actually quite crowded. Hundreds of optional hard¬
ware devices, such as communications adapters, are all vying for ports here.
This range of I/O addresses is also mostly accounted for by network and com¬
munications adapters and video adapters that have been added recently.
microDCF™
Text Workstation
IBM DCF3 Compatible
Text Processing System
For Your PC
• IBM Script language
• IBM GML language
• macro libraries
• symbol support
• multi-pass processing
• high performance
• laser printer support
• table of contents
• back-of-book index
• user-definable languages
• modular print manager
• and much more...
$795.-
Quantity Discounts
Site Licenses
Full Maintenance
TM
APS/SPF
Programmer
Workstation
IBM ISPF Compatible
Program Development
Tools For Your PC
• ISPF PDF editor
• dialog manager
• dialog panel editor
• utilities
• multitasking while editing
• directory file selection
• customizable master menu
from $145.-
Arrix Logic Systems Inc.
PO Box 142, Don Mills Stn.
Ontario M3C 2R6, Canada
(416) 292-6425
TELEX 06-986766 TOR
IBM is a registered trademark of International
Business Machines Corp.
MARCH 1987
CIRCLE NO. 122 ON READER SERVICE CARD
111
I/O MAPPING
FIGURE 13: Assembly Language Port Access
Listing 1. SYNC.ASM
video
status information
VSTAT
HRTRCE
equ
equ
3dah
1
video (CRT) status register
horizontal retrace bit mask
mov
dx,VSTAT
; read c/g adapter status register
wait_horizrefresh:
in
al,dx
test
al .HRTRCE
; test horizontal retrace bit
jnz
wait_horiz_refresh
; loop until not in a retrace period
cl i
; can't tolerate an interrupt here
wait_horiz_ret race:
in
al,dx
test
al,HRTRCE
; test horizontal retrace bit
jz
wait_horiz_ret race
; loop until retrace starts
The CGA’s control port can be examined to determine when the scanning beam is in horizontal refresh and retrace periods.
data quickly from the program data seg¬
ment to the display data segment.
The essence of the routine is pre¬
sented in the code fragment in figure
13, which shows how to examine the
CGA’s control port at 3DAH to deter¬
mine when the scanning beam is in
horizontal refresh and retrace periods.
To avoid visual interference, CGA mem¬
ory should be accessed only during
horizontal or vertical retrace periods.
BASIC provides the PEEK function,
which yields the byte value at the speci¬
fied address (offset) in the current seg¬
ment. A DEF SEG statement must be
used before calling PEEK if the current
segment is not the one where the byte
of interest is located. The companion
POKE statement allows programs to
alter the contents of memory locations.
It, too, requires the use of a DEF SEG
to declare the correct segment for the
location to be accessed. BASIC also has
the INP function and OUT statement
that permit direct access to ports.
C compiler vendors typically sup¬
ply UNIX-compatible standard link
libraries that are augmented with PC
memory and port-access functions. Most
C libraries provide a set of standardized
memory functions, such as memcpy
(copy memory), memchr (search for a
character in a specified region of mem¬
ory), and several others. In addition, the
functions inp and outp are usually pro¬
vided to permit direct port access.
Caution is advised when working
in the PC’s address spaces. Poking data
into the wrong place, such as a hard¬
disk parameter table, could cause prob¬
lems that are not easily reversed. The
memory and port maps presented here
are intended to be a general guide to
where the important hardware elements
of PCs are located and where new ones
might be safely placed.
REFERENCES
Davies, Russ. COMPUTERS Mapping the
IBM PC and PCjr. New York: Com¬
pute! Publications, Inc., 1985. This
book is already slightly dated be¬
cause it does not cover the PC/AT,
but it has many useful BASIC and
assembly language examples.
Jourdain, Robert. Programmer's Prob¬
lem Solver for the IBM PC, XT & AT.
Englewood Cliffs, NJ: Brady Commu¬
nications, 1986. This excellent book
is a desk reference in addition to be¬
ing a how-to book. It addresses many
of the critical areas where programs
meet machine and is full of helpful
examples in several different pro¬
gramming languages.
Technical Reference manuals (Hardware
Reference Library), IBM. A version of
this document is available for each of
the IBM Personal Computer models.
The maps in this article are a com¬
posite of the information presented
in the Technical Reference manuals.
Augie Hansen is the author of vi: The UNIX
Screen Editor, (Brady/Prentice Hall Press,
1986). His latest effort, an advanced C pro¬
gramming book called Proficient C, is due
out in March from Microsoft Press.
TOTAL CONTROL
OF ALL YOUR FILES
Easy Path .The Cadillac of hard disk management systems
—Especially for programmers and power users-
EasyPath fills the void in DOS by allowing
complete access to all your hard disk files.
Easy Path lets you
• Access any file from any subdirectory
• Redirect file retrieval or file storage
• Execute any program from any sub¬
directory • Specify pathing for COM,
EXE and all other files • Locate any file
anywhere on your hard disk • Find
files by name or attribute • Change
attributes of files • Pipe files to RAM
disks • Search for or redirect files by name,
extension, attribute, subdirectory or other means
• Use wildcards and global file names
EasyPath comes with pre-configurated BAT files for most major programs,
a complete user's guide, and online help.
Now at a new low price of $59.95 directly from:
ISOGON
CORPORATION
330 Seventh Avenue, New York, New York 10001 212 967-2424
112
CIRCLE NO. 139 ON READER SERVICE CARD
PC TECH JOURNAL
WHY LOGITECH MODULA-2
IS MORE POWERFUL
THAN PASCAL OR C.
Separate Compilation
w/inter-module typechecking
Native Code Generation
Large Memory Model Support
Most Powerful Runtime Debugger
Comprehensive Module Library
Maintainability
Translator from Turbo and
ANSI Pascal
WIN A FREE TRIP TO
Switzerland
HOMELAND OF MODULA-2
Return your Modula-2 Registration Card or
a reasonable facsimilef postmarked between
March 1,1987 and May 31,1987 to be included
in a once-only drawing!
Grand Prize: One week excursion for 2 in
Zurich, Switzerland including a guided tour of
ETH, the University where Modula-2 was
created by Niklaus Wirth. European custom¬
ers may substitute a trip to Silicon Valley,
California.
Second and Third Prizes: LOGITECH C7
Mouse or LOGITECH Bus Mouse with Paint
& Draw software—a 5219 value, absolutely
free!
*Write to Logitech, Inc. for a registration card
facsimile.
APPRENTICE PACKAGE $99
Everything you need to begin producing reliable
maintainable Modula-2 code. Includes the Compiler
with 8087 support, integrated Editor, Linker, and
BCD Module. We’re also including FREE our Turbo
Pascal to Modula-2 Translator!
WIZARDS’PACKAGE $199
This package contains our Plus Compiler—for
professional programmers or for those who just want
the best. The Plus Compiler with Integrated Editor
requires 512K and takes advantage of the larger
memory to increase compilation speed by 50%. Our
Turbo Pascal to Modula-2 Translator is also includ¬
ed at no extra charge.
MAGIC TOOLKIT $99
We’ve put our most powerful development tools
into one amazing Toolkit for use with either the
Apprentice or Wizards’ packages. Highlighted by our
Runtime Debugger, the finest debugging tool avail¬
able anywhere, the Toolkit also includes our Post
Mortem Debugger, Disassembler, Cross Reference
utility and Version which keeps track of different
versions of one program. Our MAKE Utility figures
out module dependencies and automatically selects
those affected by code changes to Minimize recom¬
pilation and relinking. We also provide source code
of our major library modules for you to customize—
or just play with.
WINDOW PACKAGE $49
Now you can build true windowing into your
Modula-2 code. Features virtual screens, color sup¬
port, overlapping windows and a variety of borders.
ROM PACKAGE AND CROSS
RUN TIME DEBUGGER $299
For those who want to produce rommable code.
You can even debug code running in ROM from
your PC.
Call for information about our
VAX/VMS version, Site License, University
Discounts, Dealer & Distributor pricing.
To place an order call
toll-free:
800-231-7717
In California:
800-552-8885
•••••••••••••••••••••••••
1 want the spellbinding power
of LOGITECH Modula-2!
I □ Apprentice Package $99
□ Wizards’ Package $199
□ Magic Toolkit $99
□ Window Package $49
□ ROM Pkg/Cross RTD $299
Add $6.50 for shipping and handling. Calif, residents
add applicable sales tax. Prices valid in U.S. only.
Total Enclosed $_
• •
i YES!
□ VISA □ MasterCard □ Check Enclosed
Card Number
Signature
Name
Address
City
State
Phone
LOGITECH
LOGITECH, Inc.
805 Veterans Blvd. Redwood City, CA 94063
Tel: 415-365-9852
In Europe:
LOGITECH SA, Switzerland
Tel: 41-21-879656 • Telex 458 217 Tech Ch
In Italy:
Tel: 39-2-215-5622
HiiMiiiy
Expiration Date
Turbo Pascal is a registered trademark of Borland International.
CIRCLE NO. 229 ON READER SERVICE CARD
> • ••• •• •• •••• •;
JOHN T. COCKERHAM
T o the field of computer languages,
Niklaus Wirth has contributed
three. His first, PL360, never really
took hold as intended in the world of
IBM 360 machines, yet within it Wirth
had laid the groundwork for his next la¬
bor, the decidedly more successful Pas¬
cal. This second work continued a pro¬
gression in design and technique that
have culminated in a language that
boasts strong typing and highly struc¬
tured syntax, yet offers flexibility and
low-level accessibility: Modula-2.
The language itself is reconsidered
here (pursuant to its introduction in PC
Tech journal two years ago), and the
current crop of Modula-2 compilers is
appraised. (See "Modular Construction"
and "Modular Implementation," Tom
Woteki, Alan Frieden, Dpv Lew, Thor
Bestul, and Robert Stine, November
1984, p. 72 and December 1984, p. 154,
respectively). The current list of lan¬
fiags on the 8088). Also, in PL360, the
Boolean expression governing an IF
statement could be a simple test on
conditional code. For example,
IF < THEN...
guage implementations includes Inter¬
face Technologies Corporation (ITC)
M2SDS (and SDS-XP), Logitech, Inc.
Modula-2, Modula Corporation PC Mod¬
ula-2, PCollier Systems Modula-2PC,
Pecan Software Systems Modula-2, and
Workman ik Associates FTL.
Wirth had introduced PL360 in
1968 as a single-pass, structured, high-
level assembly language for use on IBM
360/370 mainframe machines. Some of
the features of Pascal were evident in its
forebear. An assignment statement had
an ALGOL-like appearance—rl : = r 1
+ 1; meant add 1 to register 1, and
FOR loops used the 360 registers as
operands and compiled directly to
hardware looping instructions.
With PL360, Wirth initiated segmen¬
tation as a device for breaking a large
program’s code and data into smaller
blocks. Noteworthy was his use of 360
condition code (the 360 equivalent of
tested the condition code, which was
set as a side effect of a previous arith¬
metic operation for being less than.
However, the language lacked a
comprehensive set of \JO facilities and
did not interface particularly well to
OS, IBM's mainframe operating system.
PL360 never fully took hold in IBM 360
mainframe assembly language program¬
ming and remained something of an
oddity in the computer world.
In 1971, Wirth released Pascal, a
language that gained widespread accep¬
tance as a didactic tool and as a devel¬
opment medium on the PC, but Pascal
still lacked multiprogramming capabili¬
ties. When Wirth began designing Mod-
M iOTOGRAPl \ • STEPHEN LONGLEY
MODUIA-2
ula, it was with the specific intent to
implement multiprogramming, multi¬
processing, and separate compilation.
In PL360 and Pascal, a program’s
source code was compiled all at once
(using include files as necessary). As
Pascal programmers know, this can pro¬
tract development. With Modula, Wirth
introduced separately compiled entities
called modules. Modula’s syntax also
eliminates some of the earlier (more
clumsy) language constructs, such as
IF ... THEN
BEGIN ... END
ELSE
BEGIN ... END
This particular sequence was sup¬
planted with the simpler
IF ... THEN ...
ELSE ...
END
Modula was implemented experimen¬
tally in 1975. In 1977, Wirth began de¬
signing an integrated programmer’s
workstation, the Lilith. In developing
Lilith software, Wirth’s goal was to de¬
vise one language that would serve
both at high-level application and at
low-level implementation for the oper¬
ating environment. In fulfillment of this
goal, Modula-2 was born.
A LANGUAGE APART
In spite of its impressive heritage, Mod¬
ula-2 has not yet achieved widespread
acceptance within the PC programming
community, a fact that is probably at¬
tributable to die instability of some of
the early Modula compilers. Certainly
the language is structured to answer the
requirements of complex programming.
A complete Modula-2 program con¬
sists of one or more separately com¬
piled modules, each of which has two
parts, the definition and the implemen¬
tation. The two usually are specified in
separate files. The definition module
contains the declarations of identifiers
to be made visible to other modules; it
resembles the header file in C, broken
into small pieces. The hames and argu¬
ments of procedure calls, data struc¬
tures, and enumerated constants typi¬
cally are written into the definition
module. All of the systems reviewed
here compile definition modules into a
more compact form to allow the com¬
piler faster access to symbol definitions.
The details of how a particular module
performs its task are hidden in an im¬
plementation module—the actual exe¬
cutable code for the procedure named
in the definition module.
To use an identifier belonging to a
definition module, the client module
(the module desiring such use) must
import it. The IMPORT statement speci¬
fies to the compiler the name of the
definition module in which the identi¬
fier to be imported is defined. The
compiler searches for and incorporates
any symbols named in the IMPORT
statement into the compilation of the
client module. This includes procedure
headers, along with definitions of pro¬
cedure parameters and their types.
The philosophy behind the formu¬
lation of this construction is very pow¬
erful. In following such a format, pro¬
ject designers can specify the interfaces
between procedures first, by building
definition modules that define types
and procedure headers. Then, varying
implementations of a particular pro¬
cedure can be substituted without ever
changing the original definition, and
because the implementation details are
hidden from the other modules, no
other module will come to rely on the
details of implementation.
During compilation, only those def¬
initions of interest to the client, as spec¬
ified in an IMPORT statement, are in¬
cluded (unlike C, which includes the
entire global header file). To enforce
this development style further, a Mod¬
ula-2 system also must check the consis¬
tency of definitions across the definition
Our “TAPE CONNECTION” system
can read and write 1/2” 9-Track
800/1600/6250 GCR magnetic
tapes from large computer systems.
Our “DISKETTE CONNECTION”
system can read and write most
3Vz’\ 5 Va’\ and 8” diskettes.
For. more information please call us at 602-779-3341.
FLAGSTAFF
ENGINEERING
• Flagstaff, AZ 86001
For thousands of customers world
wide, we supplied the connection
to get information into their PC.
Our “SCANNING CONNECTION”
system can scan images for use
with desktop publishing systems,
to text using our
and send images to
machines.
BOB STANTON HAD A GREAT IDEA.
AN HOUR LATER HE WAS TESTING IT.
WEDNESDAY! THURSDAY
1 FRIDAY 1
J3SB
"r#:
" "“"Sr
Sawaar-
Appointments. Everybody
takes them — dentists, auto¬
body shops, dance instructors.
And lots of computer applica¬
tions need appointment
screens.
Bob thought that a calen¬
dar made a terrific graphic
metaphor for taking appoint¬
ments. Simply use the arrow
keys to pick an open date, then
press the Enter key, and up
pops an appointment window.
Lucky for Bob, he’s a
CLARION programmer, one of
a fast growing cadre of super-productive application developers.
With CLARION'S Screener utility, he painted a white calendar on a black back¬
ground. Then he drew a white-on-blue track around the page and between the days.
He typed in the days of the week — and voila! — a calendar!
CLARION knows that a PC monitor is refreshed from memory, so it treats a
screen layout like a group of variables. Just move data to a screen variable, and it
shows up on the monitor.
Bob set up dimensioned screen variables for the days of the month and a screen
pointer for selecting a date, and he was done. Then Screener generated the code.
Then Bob drew the appointments window, built an appointment file, filled in the
connecting code and tested it — ONE HOUR AFTER HE STARTED!
Testing was a breeze. Screener doesn't just write code, it compiles your source,
displays a screen, gets the changes, then replaces the old code in your pregram.
So here are Bob's appointment screens. You can see the source listing to the right.
We marked all the code Screener wrote for him.
WHY CLARION?
Why are application developers everywhere
changing to CLARION?
Because CLARION gives you all the tools
you need: a coupled compiler and editor; screen,
report, and help generators; an import/export
utility; a sort/backup/restore utility; a format¬
ted file dump; a DOS shell — and much more.
Because with CLARION’s comprehensive
data management routines, records can be
locked and files shared on Novell®, 3COM®,
IBM® PC Net & Token Ring, Multi Link®, and most other networks.
Because CLARION is not hardware locked or copy protected. Ryn-time systems
are free and soon you will be able to translate CLARION into native machine code
(.EXEs).
And best yet, the price of CLARION vl.l is just $395 plus shipping and handling.
You’ll need an IBM PC or true compatible with 320KB of memory and a hard disk drive. CLARION vl.l
also comes with a 30-day money back guarantee.
So call now and order CLARION vl.l. or ask for our
detailed 16-page color brochure and reprints of major reviews.
[ TUESDAY [ WEDNESDAY! THURSDAY ! FRIDAY | SATURDAY
800/354-5444
CLARION
from BARRINGTON SYSTEMS, INC.
150 EAST SAMPLE ROAD
POMPANO BEACH FLORIDA 33064
305/785-4555
Copyright 1986 Barrington Systems, Inc. CLARION is a registered trademark of Barrington Systems, Inc. IBM is a registered trademark of International Business Machines Corporation
Novell is a registered trademark of Novell, Inc. 3COM is a registered trademark of 3COM Corporation Multi Link is a registered trademark of Software Link, Inc. Dept. A9
CIRCLE NO. 105 ON READER SERVICE CARD
MODUIA-2
Coroutines are procedures that share the same thread of execution. A Modula-2
module relinquishes control through a call to the procedure Transfer.
modules and implementation modules.
This ensures that the definition module
has not changed between the time that
the implementation for a definition was
compiled and the time the client mod¬
ule imports that definition.
Modula-2 demands strong typing of
operands. The rules governing compati¬
bility during assignment operations are
strictly enforced, but may be defeated
by explicit coercions, called type trans¬
fers (which are similar to casts in C and
free union variant records in Pascal).
Modula-2 library routines provide type
conversions whereby the equivalent
value is calculated. This differs from
coercions in which the storage that is
occupied by the identifier is reinter¬
preted in the coerced type.
Like C and Ada, Modula-2 has no
built-in I/O constructs. In place of these,
Wirth described a standard set of library
modules containing procedures and
functions (which in Modula return val¬
ues) that perform basic I/O and float¬
ing-point arithmetic.
The language lacks a GOTO state¬
ment, a situation for which there are
strong theoretical and practical reasons.
It has been proved that any code se¬
quence incorporating a GOTO can be
implemented using structured logic
(fully supported by Modula-2) with
identical effect. Certainly, programs that
contain GOTO statements are more dif¬
ficult to debug and maintain. Eliminat¬
ing GOTO also makes certain tasks eas¬
ier on the compiler code generator.
Modula-2 permits absolute memory
referencing in a standard, portable way;
however, support for CPU register ma¬
nipulation, address arithmetic, port I/O,
and software interrupt invocation are
handled differently by each of the
Modula-2 implementations.
One of the language’s more impor¬
tant capabilities is, of course, its support
of multitasking and multiprocessing.
However, the PC is a single CPU system;
therefore, true multiprocessing, in
which multiple threads execute simulta¬
neously on separate CPUs operating in
the same memory address space, cannot
take place. As a result, Modula-2 pro¬
cesses on the PC are limited to quasi¬
concurrent serial execution.
Each of the systems reviewed here
implements multitasking as a form of
multiprocessing, and each offers two
different sets of multitasking services.
First, coroutines are procedures that
share a single execution thread. This
concept is presented graphically in fig¬
ure 1. In that figure, MODULE a inter¬
rupts its flow of execution by perform¬
ing a call to Transfer, to pass control of
the CPU to MODULE b. MODULE b con¬
tinues to execute until it calls Transfer,
which returns the flow of control to the
point in MODULE a at which execution
was suspended by Transfer.
The second set of services—includ¬
ing a task creation mechanism and
scheduling algorithm—delivers true
multitasking. Most of these Modula-2
systems provide multitasking by placing
a runtime system on top of DOS. The
runtime system takes control of key
hardware interrupts, including the timer
tick interrupt 1CH, in order to set up a
multitasking environment. Interprocess
controls with appropriate waiting and
posting mechanisms are provided.
Other library routines associate a pro¬
cess with a particular hardware inter¬
rupt and also provide the appropriate
interrupt dismissal services.
A program or implementation
module that has a priority associated
with its execution is called a priority
module or monitor. The priority value
is specified in square brackets alter the
name of the module in the implemen¬
tation, as in the following example:
IMPLEMENTATION MODULE
InterruptHandler [0]
The relative meaning of the priority
number depends upon the Modula-2
implementation; in most cases, the low¬
er the number, the higher the priority.
When a procedure is called within a
priority module, the current execution
priority changes to the module’s prior-
118
PC TECH JOURNAL
YOU ARE ABOUT TO BE SEDUCED
BY POWER AND MONEY.
Admit it. You’re intrigued
with the idea of C programming.
You may be working in BASIC,
Pascal or Assembler now But
you’re drawn to the power, por¬
tability and flexibility of C. And if
money is what motivates you,
imagine having it all for just $75
with Mark Williams Let’s C.®
EVERYTHING YOU COULD
ASK FOR IN A C COMPILER.
Let’s C is no mere training
tool. It’s a complete, high quality C
compiler. With the speed and code
density to run your programs fast
and lean. It won’t get you side¬
tracked on some quirky aberration of C; Let’s C supports
the complete Kemighan & Ritchie C language-to the
letter. And it comes from the family of Mark Williams
C compilers, the name chosen by DEC, Intel, Wang and
thousands of professional programmers.
POWERFUL UTILITIES ARE A REAL BONUS
Let’s C doesn’t stop with being a high performance
C compiler. It includes utilities you’d expect to pay extra
for-like a linker and assembler plus the MicroEMACS full
screen editor with source code included. Having the
source code not only allows you to customize the editor, it
offers a close up, fully commented view of C programming
at its best.
REVIEWERS ARE SOLD ON LET’S C, TOO.
create applications.”
-William G. Wong, BYTE, August 1986.
“Let’s C is a thoroughly professional C
environment loaded with tools and pro¬
gramming utilities...another fine Mark
Williams product.”
-Christopher Skelly, COMPUTER
LANGUAGE, February 1986
“The performance and
documentation of the $75
Let’s C compiler rival those of
C compilers for the PC currently
being sold for $500...
highly recommended...”
-Marty Franz, PC TECH
JOURNAL, August 1986
ADD THE csd DEBUGGER AND CUT
DEVELOPMENT TIME IN HALF.
Invest another $75 and you’ve got
Mark Williams revolutionary source lex
debugger, csd lets you bypass clunky
assembler and actually debug in C.
That’s a big help when you’re learning
C and indispensable when you’re
programming, csd combines the
interactive advantages of an inter¬
preter with the speed of a compiler,
slicing development time in half. This is how Byte Maga¬
zine summed it up: “csd is close to the ideal debugging
environment.” William G. Wong, BYTE, August 1986
“Let’s C is an inexpensive, high-quality program¬
ming package...with all the tools you will need to
Features
• For the IBM-PC and
Compatibles
• Fast compact code plus
register variables
• Full Kernighan & Ritchie C
and extensions
• Full UNIX compatibility and
complete libraries
• Small memory model
• Many powerful utilities includ¬
ing linker, assembler, archiver,
cc one-step compiling, egrep,
pr, tail, wc
• MicroEMACS full screen
editor with source
• Supported by dozens of third
party libraries
• Upgradeable to C Program¬
ming System for large scale
applications development
• Not copy protected
Let's C Benchmark Done on an
IBM-PC/XT, no 8087.
Program: Floating Point
from BYTE, August, 1983.
Exec Time in Seconds
Let's C 134
MS 4.0 147
MARK WILLIAMS LET'S C
$75
60 DAY MONEY BACK GUARANTEE
ARE YOU STILL RESISTING?
If there’s any doubt that now’s the time to get your
hands on the power of C, consider Mark Williams 60-day
money back guarantee. You can’t lose. But with Let’s C
and csd, imagine what you could gain.
Ask for Let’s C and csd at your software dealer’s, in
the software department of your favorite bookstore,
through the Express Program at over 5500 Tandy stores
or order now by calling 1-800-MWC-1700.*
*In Illinois call 312-472-6659
Mark
Williams
Company
1430 West Wrightwood, Chicago, Illinois 60614
© 1986, Mark Williams Company
Let’s C is a registered trademark of the Mark Williams Company
UNIX is a trademark of Bell Labs.
MARK WILLIAMS LET’S C. ONIY «75.
CIRCLE NO. 207 ON READER SERVICE CARD
MODULA-2
TABLE 1: Compiler Specifications
INTERFACE LOGITECH
MODULA
PCOLLIER
PECAN
WORKMAN
VERSION
2.0a
2.05
1.1
1.0
1.0
1.1
PRICE
$80.88
$89.00
$195.00
$99.95
$79.95
$49.95
filter/environment
E
F
F
E
E
F
RESOURCES
Disk space
1MB
2MB
1MB
1MB
750KB
500KB
Environment (bytes)
40
80
40
15
0
15
Minimum memory
to compile
256KB
320KB
256KB
256KB
128KB
256KB
COMPILER
Type
4-pass
4-pass
1-pass
1-pass
_ a
1-pass
Memory model
Large
Large
Large
Small
_ a
Small
Complete language
•
m b
•
•
•
SET OF CHAR
O
O
O
O
o
•
Long integer
•
O
•
•
o
•
Concurrency
Monitors
O
•
•
•
o
O
Interrupts
•
•
•
•
•
•
Coroutines
•
•
•
•
•
•
Multitasking
o
•
•
o
•
•
Low-level
In-line code
•
•
•
•
•
o
Register Access
•
•
•
o
o
•
Absolute Variables
o
•
o
•
•
•
Interrupts
•
•
•
•
•
•
Real numbers
In-line native 8087
•
•
o
o
o
o
8087/80287 library
•
•
•
•
•
•
Detect at runtime
o
•
o
o
o
•
Compiler options
Storage squeeze
0
•
o
o
o
o
Runtime checks off
•
•
•
•
•
o
Defeat case
o
o
o
•
•
o
Listing
o
•
o
•
•
•
Syntax extensions
Predefined arrays
0
o
o
o
o
o
Multiple while
0
0
o
•
o
o
EDITOR
Syntax directed
•
o
_ c
o
o
o
Syntax checker
•
•
_ c
o
o
•
Multiple files
•
•
— c
•
•
•
Windows
•
•
_ c
•
o
•
• = Yes 0 = No
Part. = partial
Opt. = optional feature, at extra cost
ity. A lower priority procedure can call
a higher priority procedure; however, a
runtime error occurs if a high-priority
procedure calls one of lower priority.
When a procedure of a given priority is
running, only a procedure of higher
priority may interrupt and run. The pro¬
cedure Listen provides a mechanism to
temporarily lower a module’s priority
in order to allow other modules of a
lower priority to execute.
Modula-2 is wanting in some areas.
Despite its claims to be a low-level
language, for example, it places the
BITSET type between the programmer
and the bits that comprise a word. In¬
stead of logical operations, such as OR,
AND, and XOR, BITSETs use set opera¬
tions to create logical bit operations.
BITSETs themselves are not difficult to
understand, but they do place a seman¬
tic layer between the system program¬
mer and the hardware. Another Modula-
2 weakness is that its sets can contain
no more than 16 members. Types de¬
fined as SET OF CHAR, so useful in Pas¬
cal text processing, are illegal in most
implementations of Modula-2.
As with standard Pascal, Modula-2
makes no provision for defining vari¬
ables with an initial value. Although
PL360 had the capability of predefining
global arrays with constant data, this
feature was not carried forward into
Pascal or Modula-2. (Note, however, that
the typed constants of Borland’s Turbo
Pascal perform this service very well,
and some Modula-2 vendors have indi¬
cated they may implement a similar fea¬
ture in future releases, as an extension
to the Modula-2 standard.)
The Modula-2 language definition
is presently quite spare because most of
Modula’s I/O and mathematical func¬
tions reside in libraries. Wirth de¬
scribed a library of basic routines in his
report of the Lilith implementation
(Programmming in Modula-2 , third
edition, Springer-Verlag, 1983). These
descriptions were not meant as stan¬
dards, and, indeed, are not rigorous
enough to be considered standard defi¬
nitions. Unfortunately, this situation has
led to the development of dialects that
hinder code portability; however, the
British Standards Institute is close to
releasing a report that does include def¬
initions of basic library routines.
SYSTEM COMPONENTS
Since Modula-2 and its implementations
were last reviewed, three new conten¬
ders have entered this compiler field,
from ITC, PCollier Systems, and Work¬
man & Associates. Pecan Software ab¬
sorbed Volition Systems’ p-code Mod¬
ula-2, and enhanced it with a native
code generator similar to that included
with UCSD Pascal. Apart from the Voli¬
tion Systems’ metamorphosis, the sys¬
tems reviewed two years ago are still
going strong: Logitech has greatly en¬
hanced its compiler and Modula Corpo¬
ration has altered its system to produce
native code. Table 1 lists the individual
compiler specifications.
Most of these products are com¬
plex program development environ¬
ments, with debuggers, editors, and util¬
ities. In comparing the packages, several
factors must be considered:
• The compiler itself must be bug-free.
• It must accept valid Modula-2 source
code and reject invalid lines, and it
must produce correct code for the
source lines it compiles.
• The degree of completeness of each
compiler’s implementation of the lan¬
guage must be measured, including
priority and process implementation,
absolute variables, in-line low-level
code, and interrupt access.
• Any nonstandard, but convenient,
extensions that the compiler adds to
Modula-2 that ease the programmer’s
burden must be assessed.
120
PC TECH JOURNAL
All of these compilers implement the de facto Modula-2 standard defined by Niklaus
Wirth in his report of the implementation on the Lilith; some offer extensions.
• The limitations of the compiler must
be considered—how many symbols
are permitted and how maximum
code block length are evaluated.
• The compiler’s generated code should
be of a high quality.
• The memory model for the compiled
code must be evaluated.
• The compiler’s overall friendliness,
including diagnostic messages and
graceful recovery from syntax errors,
is also an important factor.
After assessing the compiler, the
steps necessary to generate a Modula-2
program are examined by evaluating
the mechanism for linking the modules
together into an executable program.
These systems generate a variety of ex¬
ecutable programs: some are standard
.EXE files, others are specific to the
Modula-2 implementation and require
the particular system’s loader to run.
Each vendor’s implementation of
Wirth’s standard Modula-2 libraries also
must be examined: InOut includes pro¬
cedures similar to C’s streams; Terminal
implements low-level terminal access
routines; Storage contains memory-man¬
agement routines; and MathLibO pro¬
vides floating-point procedures, such as
trigonometric functions. In his report,
Wirth also mentioned windowing rou¬
tines for both text and graphics, graphic
pointing device services, and a menu
system. Most of these packages provide
the basic routines Wirth described;
some even provide the windowing in¬
terface used on the Lilith.
The development tools are consid¬
ered last. The debuggers, program edi¬
tors, and cross-reference utilities are
evaluated for their usefulness and user
friendliness. Any additional tools, cross
compilers or ROM packages, for exam¬
ple, round out the review.
Code quality. Quantifying the “goodness”
of compiled code is difficult. Code gen¬
eration itself is a mathematically unde-
cidable problem; hence a more heuris¬
tic approach is needed. The compiler
author, when writing code generators,
faces a trade-off between code speed
and code size in mapping processor in¬
structions to language constructs. In the
8086 instruction set, many routes may
be available to generate code corre¬
sponding to a particular Modula-2 lan¬
guage statement. Code generators that
use the 8086 architecture to the fullest
generate the best code.
To write a code generator that pro¬
duces good code, the compiler author
must thoroughly understand the target
machine for which the code is being
generated and choose the code model
that best fits the machine. A code model
encompasses the procedure activation
record (the return address, parameters,
and temporary variables of a proce¬
dure), standardization of calling se¬
quences, static data allocation and data
representations—the framework into
which the compiled instructions are
placed. The appropriate choices here
will vastly improve the speed of fin¬
ished product: the emitted code. (Note
that code model should not be con¬
fused with memory model , a term that
defines pointer size and the use of code
and data segments in allocating memory
to code and data at execution time.)
The Intel/Microsoft standard code
model requires building the procedure
activation record by pushing the param¬
eters onto the stack (the ordering is not
important because Modula-2 does not
support procedures with a variable
number of arguments), and executing a
call instruction, which places the return
address on the stack. Open array argu¬
ments (unbounded parameter arrays)
include their lengths as part of the pa¬
rameter. The activation record pointer
(in BP) is then created by pushing the
old value of BP (the caller’s activation
record pointer) onto the stack and
MARCH 1987
121
MODULA-2
FIGURE 2: Code Quality
MOOULA-2 SOURCE CODE --
VAR i,j,k: CARDINAL;
j := 0; k := 10000;
REPEAT
k := k - 1; j := j + 1; i := (k * 3) DIV (j * 5);
UNTIL k = 0 ;
COOE GENERATION --
INTERFACE LOGITECH MOOULA PCOLLIER PECAN WORKMAN
mov
j,o
mov
j,o
mov
j,o
mov
j,o
mov
j,o
mov
j,o
mov
k, 10000
mov
k,10000
mov
k,10000
mov
k,10000
mov
k,10000
mov
k,10000
mov
ax,k
mov
ax, k
mov
ax,k
mov
bx,k
mov
ax,k
mov
ax,k
sub
ax,1
dec
ax
sub
ax,1
dec
bx
dec
ax
dec
ax
mov
k,ax
mov
k,ax
mov
k,ax
nop
mov
k,ax
mov
k,ax
mov
ax , j
mov
cx,j
mov
ax, j
mov
k,bx
mov
ax, j
mov
ax, j
add
ax, 1
inc
cx
add
ax, 1
mov
bx, j
inc
ax
inc
ax
mov
j,ax
mov
j,CX
mov
j,ax
inc
bx
mov
j,ax
mov
j,ax
mov
ax,k
mov
ax, k
mov
ax, k
nop
mov
ax,k
mov
ax, j
mov
cx,3
mov
bx,3
mov
bx,3
mov
j.bx
mov
bx,3
mov
dx,5
mul
cx
mul
bx
mul
bx
mov
bx,3
imul
bx
imul
dx
mov
cx,j
mov
dx,j
xchg bx,ax
mov
ax,k
mov
bx,ax
mov
dx,ax
mov
bx, ax
push
ax
mov
ax, j
mul
bx
mov
ax, j
push dx
mov
ax,cx
mov
ax,dx
mov
cx,5
push ax
mov
si, 5
mov
ax,k
mov
cx,5
mov
si ,5
mul
cx
mov
bx,5
imul
si
mov
dx,3
mul
cx
mul
si
xchg cx,ax
mov
ax, j
mov
si, ax
imul
dx
mov
cx,ax
mov
dx,ax
xchg bx,ax
mul
bx
mov
ax,bx
pop
dx
mov
ax,bx
pop
ax
mov
dx,0
nop
cwd
call
divide
xor
dx,dx
mov
cx,dx
div
cx
mov
bx,ax
idiv
si
mov
i,ax
div
cx
mov
dx,0
mov
i ,ax
pop
ax
mov
i ,ax
mov
i, ax
div
cx
xor
dx,dx
mov
i ,ax
div
bx
nop
mov bx,ax
mov i, bx
The compilers perform relatively naive code generation. Notable inefficiencies are
FTL’s call to a function to perform division and PCollier’s insertion of NOPs.
copying the current stack pointer into
BP. Parameters lie at positive offsets
from BP. Temporary variables are allo¬
cated on the stack below BP (that is, at
a negative offset from BP) by subtract¬
ing from SP the number of bytes of
temporary storage space required. At
the end of the procedure, the tempo¬
rary variables are removed from the
stack by replacing SP with BP, in effect
moving SP up past the temporary vari¬
ables to BP. A RET instruction with a
stack decrement value removes the ar¬
guments from the stack and returns
control to the caller.
Among these compilers, the meth¬
od for passing parameters to proce¬
dures changes depending on the code
model. The Logitech, ITC, and Work¬
man & Associates compilers all pass
their parameters on the stack. By con¬
trast, PCollier’s compiler passes its pa¬
rameters by pushing them onto the
stack and, during the call, copying its
parameters into the data segment of the
target procedure. This method may per¬
mit faster accesses to the parameters as
compared to finding them on the stack
because the processor does not have to
calculate an effective address for each,
but it requires code to move the param¬
eters and also to preserve them and any
local variables in the event that the pro¬
cedure is called recursively. Modula
Corporation’s compiler pushes its pa¬
rameters onto the stack before calling
the target procedure, leaving stack
clean-up to the calling routine.
Apart from the choice of a method
for calling procedures, other coding de¬
cisions must be made. The CASE state¬
ment, for example, can be compiled
into several different sequences. Most
compilers evaluate the case labels in
the source code and watch for blocks of
consecutive case labels. These blocks
are then compiled into a jump table
that points into the code generated for
the CASE statement as a whole. The
case label is translated into an index
into the jump table. To cover nonse¬
quential case labels, the code generated
is typically a series of compares and
jumps. Some compilers do not discrimi¬
nate between consecutive and noncon-
secutive case labels and simply generate
a series of compares and jumps. Gener¬
ating a jump table is possible during a
one-pass compilation.
FOR loops also can be imple¬
mented in several different ways. The
current Modula-2 definition specifies
that FOR loops cannot have a variable
step, and Wirth’s Lilith report forbids
changing the loop variable within the
loop. This leaves the compiler author
with several choices for generating the
loop in machine code. For the most
part, the compilers optimize on those
loops with an increment of 1 by using
the 8086’s LOOP instruction. Upon en¬
try into the loop, the compiler checks
for degenerate cases (that is, it makes
sure that the loop bounds are in the
proper order and that the initial value
for the loop index lies between them).
Next, it calculates the number of times
the loop must execute. The loop index
and the loop count are then pushed
onto the stack. The code of the loop is
executed, and, at the bottom of the
loop, the loop index and count are
popped off of the stack and are up¬
dated. Then, the code branches to the
top where the bounds are checked
again, and so on, until the loop has exe¬
cuted the required number of times.
Very little optimization of code was
observed among the reviewed compil¬
ers. In particular, the compilers were
not sophisticated enough to “remem¬
ber” that a useful register value had
been loaded into a register for the use
of a preceding statement. Instead, all
necessary register values were reloaded
each time a statement was translated to
code, even when the proper values
were present already.
Figure 2 provides a practical exam¬
ple of the differences in code genera¬
tion. The figure shows a piece of Mod¬
ula-2 source code and lists, side by side,
disassembled listings of the cardinal
code generated by each compiler (see
table 2 for complete results from the
performance benchmarks). Actually, the
differences among the code samples
generated were few; Modula Corpora¬
tion’s package performed the fastest be¬
cause it did not use the stack for storing
temporary variables; the FTL compiler
pays a time penalty for calling a division
subroutine; and PCollier’s compiler has
several NOP (no operation) instructions
and insists on storing results through
BX, as demonstrated by the last two in¬
structions in its code sample.
The linkers. Each of the six compilers
produces a proprietary object module
format; therefore, each system must
122
PC TECH JOURNAL
The 3-in-l applications development tool
for every Tom, Dick and Harriett
Presenting the first database
applications development tool
that delivers the promises of
4th-generation lan¬
guages on the micro¬
computer.
It’s SIMPLE Software.
SIMPLE stands for SYSTEM
IMPLEMENTATION by EXAMPLE'; and
it delivers the absolute best balance
of power and ease-of-use.
SIMPLER THAN EVER BEFORE.
SIMPLE lets you jump in at any level
of experience and unleash the full
processing power of the PC. It has a
totally non-procedural way of doing
things that flattens-out the learning
curve. You can automate everyday
business tasks or prototype new
applications without ever having to
write a single line of procedural code.
SIMPLE enables experienced
programmers to achieve higher levels
of productivity. And for developing
mainframe applications, SIMPLE is
the perfect prototyping tool—com¬
bining ease-of-use, speed, and high-
quality system documentation.
YOU GET 3-IN-l.
l IT’S A DESIGN TOOL.
SIMPLE allows you to quickly proto¬
type applications on the microcom¬
puter—sit right down and draw, edit,
and specify processing logic with a
few keystrokes. SIMPLE aids in the
process of structured design by
organizing development efforts in a
building-block fashion. Experienced
developers move quickly and easily
from task to task. Less experienced
users are literally guided through
the entire applications development
process.
2. IT’S A RELATIONAL DATABASE
MANAGER.
SIMPLE offers exceptional speed per¬
formance. It is written in Assembler
and incorporates a highly optimized
B-tree data access method that elim¬
inates record sorting. SIMPLE also
uses a dynamic single-record index.
You can have an unlimited number
of indices in any record. Each index
may be either a single or concate¬
nated key. SIMPLE’s relational joins
are easy to construct and more
efficient to process. Joins are accom¬
plished dynamically at time of proc¬
essing and support one-to-many and
many-to-many relationships.
3. IT’S AN APPLICATIONS
GENERATOR.
It is the most practically 5 functional
applications generator on the market
today. SIMPLE is completely non¬
procedural, never forcing you back
to procedural methods, letting you
accomplish even the most complex
databased applications in the most
easy-to-use-and-understand fashion.
A SINGLE, VISUAL 4GL
LANGUAGE.
Uniquely, every step in program
development from input screens, to
reports, to complex processing logic
is accomplished in SIMPLE’s all-visual
worksheets. It is fully non-procedural
and totally picture-oriented. Design
right on the screen, and SIMPLE’s
built-in pattern-recognition logic
automatically generates all the appli¬
cation code for you. You never have to
leave SIMPLE’s 4GL non-procedural
technique.
POWERFUL WORKSHEETS.
SIMPLE provides three powerful,
yet easy-to-learn worksheets—a File
Worksheet, Specify Worksheet and
Design Worksheet. You need only
to define a file, then SIMPLE creates
the basic program for you. Enhance¬
ments are done on SIMPLE’s Design
and Specify Worksheets.
In the Design Worksheet, you
simply paint or draw an example of
the input screen or report you want.
Company Managers like
Tom easily develop custom¬
ized applications like this
Branch Reporting System
which reports information
from support service calls.
Tom now has a system which
validates certain information
and provides a customer his¬
tory to improve the branch’s
support capabilities. With
SIMPLE’s Specify Worksheet on
screen, Tom simply joins data
from four different files and
establishes their relationship.
Information Center Staff
Members like Dick easily
create new microcomputer
applications systems like this
Lead-Tracking System. Dick
is able to sit down with the
Director of Marketing and
review the main entry screen
developed on SIMPLE which
shows the prospect demo¬
graphic information, the
media source and date from
which each lead was gener¬
ated, and the fulfillment liter¬
ature to be sent.
System Analysts/Pro¬
grammers like Harriett
easily prototype design
changes while interacting
with Department Heads. Har¬
riett has prototyped some
requested changes in a Main¬
frame Payables System. With
the help of SIMPLE, she has
built a test database with
data imported from the main¬
frame and is able to review
the check-ledger report, in
the Controller’s office on her
portable computer.
The Design screen may be painted
exactly as you want using SIMPLE’s
built-in, full-screen editor which
offers a wide range of capabilities
to aid you—including the ability
to delete or insert a character or an
entire line, move or copy blocks of
information, lasso text or variables,
and window to other worksheets
in one or two keystrokes. Powerful
specification macros are invoked pro¬
viding application users the ability
to pop-up a window and browse
through another file, interrupt data
entry to perform another program,
provide context-sensitive help, and
perform conditional processing
based on the user’s input.
In the Specify Worksheet, you
implement your processing logic. You
never have to fall back to procedural
programming to get the processing
power you need. Range checking and
data validation are easily implemented,
visually. Conditional processing
statements are quickly set up.
Arithmetic operators, date operators,
and a full set of string functions are
available. You specify an example of
how you want your data processed,
and SIMPLE creates the program.
A POWERFUL MENU GENERATOR.
SIMPLE’s power gives you the easy
flexibility to generate unlimited
levels of user-guidance menus, as
your applications require. There are
limitless design options for effective
“point-and-shoot” menu creation.
And you have total freedom to build
menus before, during or after devel¬
opment, unmatched in other systems.
SIMPLE, SIMPLER, SIMPLEST.
Ask for SIMPLE at your computer
dealer. Or call us direct for the dealer
nearest you and a full-functioning
SIMPLE demo package with a Quick-
Start manual for only S9-95*
'Includes shipping and handling. California residents add sales lax.
SYSTEM IMPLEMENTATION BY EXAMPLE is a registered
trademark of Accuphase, Ltd.
IBM PC is a trademark of International Business
Machines, Corp.
SYSTEM IMPLEMENTATION BY EXAMPLE ,u
Published by Software Merchants Unlimited
Software Merchants Unlimited
2252 Fillmore Street, Suite 401
San Francisco, California 94115
415-567-5071
CALL 800-8 SIMPLE
CIRCLE NO. 120 ON READER SERVICE CARD
#1 Lint for MS-DOS
MODULA-2
The professional
diagnostic facility for C
PC-lint lets you zap swarms of C
bugs and glitches at a time.
■ Now you can uncover the quirks,
1 inconsistencies, and subtle errors
that infest your C programs . . .
waiting to bite you. PC-lint finds
them all... or as many as you
want... in one pass. Set PC-lint
to match your own style.
Outperforms any lint at any price
■ Full K&R support and
common ANSI enhancements
(even MS keywords)
■ Finds inconsistencies
(especially in function calls
across multiple modules!)
■ Modifiable library descriptions
for 8 popular compilers
■ Super fast,one-pass operation
■ Suppress any error message
■ Zillions of options
PRICE $139 • MC • VISA • COD
Includes USA shipping and handling
i
f
Outside USA, add $15. In PA add 6%.
ORDER TODAY,
30-day guarantee
Runs under MS-DOS 2.0 and up, and ;)
AmigaDOS. Uses all available memory. "
, Trademarks PC-lint (Gimpel Software).
\ MS. MS-DOS (Microsoft). Amiga (Commodore) j
$wm j
j; 3207 Hogarth Lane,
Collegeville, PA 19426
( 215 ) 584-4261
TABLE 2: Performance Benchmarks
INTERFACE LOGITECH MODULA PCOLLIER PECAN WORKMAN
Object size (bytes)
3,196
4,092
5,830
6,760
_ a
8,192
Compile time
26
58
45
42
160*
13
Repeat
53
49
49
88
45
46
For with step
47
41
59
106
57
52
Cardinal arithmetic
148
150
145
171
83
173
1-D array
154
167
264
326
261
145
2-D array
122
133
153
179
137
125
Empty call
107
112
175
928
545
68
Call with 4
182
178
446
1,065
604
153
Block move
217
216
300
304
145
213
Pointer chaining
269
200
2,056
498
130
143
8087/80287
20
18
_c
816
_c
_ d
List build
456
4
7
8
_ e
1
List dispose
460
600
30
5
_ e
3
Eratosthenes Sieve
12
14
20
32
18
12
WriteString
140
126
146
166
253
224
All times are in seconds.
a Object size could not be determined; see text.
b Tljese numbers are the result of dividing the actual times taken by 60. Tljis compiler’s Time function
was undocumented—the resolution of the clock is in 60ths of a second.
c Compiler does not support the 8087/80287.
d A runtime bug occurred, preventing completion of the test.
e The runtime heap was too small to complete this test.
Much of the performance difference among compilers is related to the quality and
tightness of the runtime support libraries and the efficiency of procedure calls.
provide its own linkers in order to pro¬
duce an executable file. A linker is also
desirable for other reasons. In a Mod¬
ula-2 environment, the linker should be
able to search for the component mod¬
ules of a program as they are specified
in the main module, without having to
name them at the invocation of the
linker. DOS LINK cannot do this.
Among these compilers, two ap¬
proaches are used to link the executa¬
ble file: static and dynamic. Static link¬
ing is the method in which a linker ad¬
justs address references in a relocatable
object module and optionally combines
the module with other modules to pro¬
duce a single executable code file. In
dynamic linking, portions of the execut¬
able image can be retained on disk and
loaded into memory as required and as
memory becomes available. Dynamic
linking is similar to having procedures
linked as overlays except that overlay
procedures are linked for a specific
code segment offset. Routines loaded by
a dynamic linker can be placed any¬
where, and segment references are
fixed only when the code is loaded. To
understand dynamic linking, it is neces¬
sary to know how object modules are
put together into executable programs
that the operating system can run.
Static linking builds an executable
code file. This file contains the executa¬
ble machine instructions as well as relo¬
cation information for DOS; thus, in¬
structions that use segment addresses
can be adjusted to point to their abso¬
lute locations in memory. DOS fixes
those instructions before starting execu¬
tion. If the program implements over¬
lays, the overlay manager calls DOS to
load overlays as required, supplying
DOS with the paragraph address for
segment address fix within the overlay.
In dynamic linking (as used in
Microsoft Windows), the executable
image contains pointers to the names of
routines that are to be linked when
called at runtime. Routines to be dy¬
namically linked are specified in the ex¬
ecutable file. All static links are fixed as
the executable file is processed by the
linker. At runtime, the dynamic linking
manager finds the requested routines
and permits callers to call them. The
fundamental difference in dynamic link¬
ing is that the routines are referenced
by name, so that they can move around
in memory from one call to the next.
Windows implements this feature
as tables of thunks —snippets of code in
a fixed location that always point to the
entry of a routine, or to a fault manager
that has the responsibility to reload the
linked routine. The dynamic links are
resolved at runtime.
Some of the implementations re¬
viewed provide dynamic loading as a
means of quickly checking out a pro-
124
PC TECH JOURNAL
gram during development. In dynamic
loading, linkable object modules are
loaded from disk at execution time,
with all fixes occurring while the object
modules are being loaded. Dynamic
linking, by contrast, is done partly by
the linker at link time, when intraseg¬
ment references are fixed. Intersegment
references, however, are not fixed until
execution time, because until that time,
the runtime system does not know the
location of any given segment.
In dynamic loading, a loader exe¬
cutes with the main module of the pro¬
gram. Procedure calls are intercepted
by a runtime monitor that loads the
appropriate module. As execution pro¬
ceeds, modules that are called are
loaded in turn. Dynamic loading is very
handy during development, when a sys¬
tem requires a half hour to link statical¬
ly. However, dynamic loading takes a
toll on performance,-as evidenced by
the PCollier subroutine call benchmark.
When producing a final product, the
dynamic links need to be resolved to
eliminate the performance penalty.
Most of the static linkers in these
packages fix the instructions directly
where the intermodule references are
made. The Logitech and ITC compilers
generate a FAR instruction, either a
CALL or a JMP, leaving four bytes in the
instruction’s fields for the destination
address to be filled in by the linker.
Workman’s FTL uses the small memory
model, so only NEAR references are
used, requiring only two bytes of space
for the fix. Modula Corporation resolves
references to a table of addresses at the
beginning of each code segment, so
indirect CALL and JMP instructions are
made through this table.
PCollier’s static linker does not fix
the references per se, but instead per¬
forms a permanent dynamic link. The
compiler and the loader assign a num¬
eric identifier to every procedure in the
program. When a subroutine call needs
to be made, the caller loads the identi¬
fier of the target procedure into a regis¬
ter and calls a module manager that
deciphers the identifier and passes con¬
trol to the selected routine. As born out
by the benchmarks, this method is slow.
MEASURING MODULAS
Each compiler was programmed with
updated versions of the Modula-2
benchmark programs written for the
previously mentioned articles. (The
source code for the benchmarks as they
execute under the compilers tested is
available on PCTECHline). Here the
speed of the compiled code was tested
in six specific areas: execution of sev¬
eral empty loops, integer arithmetic, ar¬
ray indexing, procedure calls, block
moves, and pointer chaining. The clas¬
sic Sieve of Eratosthenes was included
as a second test of integer arithmetic.
The speed of each system’s libraries
was tested in three ways: calculating a
real number, writing to the screen, and
creating and disposing of a linked list.
(In order to put all of the compilers on
equal footing, runtime checking, if avail¬
able, was turned off.)
Porting the benchmark to each sys¬
tem required minor adjustments to the
programs. Each language system has a
different interface to the system clock,
requiring a modification to the code. In
all cases, this was a trivial change.
The compilation speed of each
compiler was measured as it compiled
its benchmark program. Most measure¬
ments were timed by the system clock
using batch files. Because the nature of
their environments precluded using
batch files, the ITC and Pecan products
were timed using a stopwatch. The test
machine was a standard IBM PC with
640KB memory, a 20MB hard disk, and
DOS 3.1 configured with 20 buffers.
The actual compiled code was exam¬
ined with Microsoft SYMDEB by tracing
through the various Modula-2 runtime
systems to get to the benchmark pro-
PC « MAINFRAME
VIA 9-TRACK TAPE
For Information Interchange-Backup-Archival Storage
IBM format compatible 9-track, Vi inch magnetic tape is the universally accepted
media for mainframes and minicomputers. Catamount offers Low Cost, Lightweight
9-track Tape Subsystems for the IBM-PC/XT/AT computers which allow:
• Reading tapes generated on mainframes and minicomputers.
• Writing tapes to be read on mainframes and minis.
• ASCII, EBCDIC and Binary tapes accommodated.
• 800 bpi NRZI, 180 % 2 uo bpi PE, and 6250 bpi GCR format systems available.
• Storage capacities up to 270 MB on a single reel.
Systems come complete with comprehensive DOS command syntax oriented
software and an Installable Device Driver. For OEM applications,
the tape controller is available separately.
VT100/VT52 & Tektronix"
4010/4014 Terminal Emulator
Excellent emulation and the features you want:
-> use 4096 x 3120 resolution ■ -* 18 User-definable keys
pp -> zoom, pan, and window plots -> capture plots and text on disk
II •-» high resolution printer dumps -» full or half duplex
-» choose text and plot color -> access to DOS commands
^ -» transfer files with -» all VT100 keypad commands
XMODEM and Kermit protocols command line editing
II -» scroll last 4 pages of text -> fast direct screen access
LLJ 132 column VT100 capability -*• password security
VTEK makes your PC better than a terminal
$150 from Scientific Endeavors
Publication Quality Graphics for
Scientific and Technical Applications
|—| - linear, log, & polar plots -*• multiple levels of *Jjg en scripts
1 1 | -> bar charts & Smith charts ■* 4096 x 3120 resolution
' q * contour plots with labels -* zoom, pan, window plots !
(■| -s -» 3-D curves, 3-D surfaces -> multiple plots on a page
Q with hidden line removal -* high resolution printer
5 U 4 curve types, 8 markers dumps, full or half page
»- .» H fonts, font editor - plotter support in COLOR
1 1 16 color plots on EGA, Sigma, TeleVideo & Tecmar boards
*F Over 100 routines can be called by your
Q_ C program. $350. Demo $8.
|E SOURCE INCLUDED for private use only.
L- For DeSmet, 086, Aztec, Lattice, and Microsoft C compilers.
^ Scientific Endeavors
Route 4, Box 79; Kingston, TN 37763
•jfl [615] 376-4146
for 256k IBM and Corona PCs, DOS 2.xx,3.xx.
1 Epson, Okidata, Toshiba, C. Itoh printers.
NI Hewlett Packard, Houston, Sweet-P plotters.
Corona Laser printer. IBM, IBM EGA, Sigma,
TeleVideo, Tecmar, Hercules, Corona graphics,
y? A compatible assembler is required.
^ ^ THIS AD WAS MADE USING Graphic™
CIRCLE NO. Ill ON READER SERVICE CARD
CIRCLE NO. 187 ON READER SERVICE CARD
125
MODUIA-2
gram. Pecan’s generated code was not
traced by SYMDEB due to the presence
of p-code in certain library routines;
instead, it was disassembled to get an
idea of its quality by visual inspection.
For the most part, the compilers
performed comparably in the bench¬
marks. Subtle differences in the code
sequences for the benchmarks explain
some of the variation, especially in the
empty loop test, FOR loop tests, and
cardinal arithmetic. In evaluating the
cardinal arithmetic and the Sieve bench¬
marks, the differences in the timings re¬
flect the differences in the code that is
generated (refer to figure 2.)
The indexing tests show ITC to be
a winner—it makes the best use of the
8086 index registers. The differences
between ITC, Logitech, and Workman in
this test are due to ITC’s improved reg¬
ister deployment and arithmetic expres¬
sion generation. Logitech reloads its
segment registers needlessly during this
test, slowing the code down.
In evaluating the subroutine call
benchmarks, the differences between
ITC and Logitech are slight. Workman’s
good score reflects the small memory
model’s single code segment and its
16-bit return addresses, which use less
time in transferring control. Modula
Corporation does not use the stack as
effectively; it dissolves the stack “manu¬
ally” using five instructions after the
CALL, rather than letting the CPU per¬
form the task with one instruction.
PCollier, as stated above, uses a dy¬
namic linking mechanism, and copies
its parameters from the stack into the
called routine’s data segment.
In performing a block move when
assigning one structure to another, the
fastest performers use a REP MOVSW
instruction sequence. The PCollier and
Modula Corporation compilers use
MOVSB, resulting in times that were 50
percent longer. When the results of the
pointer chain test are analyzed, they
result in a tie between Logitech and
Workman’s FTL, because FTL uses 16-bit
pointers (which are passed around
more efficiently). Modula Corporation’s
compiler calls a runtime subroutine to
perform the chaining; moreover, this
product implements pointers backward
from the Intel standard, which means
that the compiler cannot use the 8086’s
pointer instructions LDS and LES.
Logitech and ITC also did quite
well in the floating-point test because
they both offer in-line 8087 code gener¬
ation. Modula Corporation’s entry was
disqualified when it claimed a spurious
floating-point error.
Apart from the Workman FTL,
which in the small memory model uses
only 16-bit pointers, those compilers
adhering to the Intel code model per¬
formed the best: Logitech and ITC.
The libraries were tested only
briefly. Here the variation in perform¬
ance is due entirely to library efficiency,
affected to some degree by the efficien¬
cy of the compiler. The wide variation
in performance of the heap manage¬
ment routines (list build and list dis¬
pose) is curious. Without the library
source code (provided only by ITC), it
is difficult to evaluate further.
Interface Technologies Corporation. Ambi¬
tious as it was (and in spite of the fact
that many bugs present in earlier ver¬
sions have been fixed), the ITC compil¬
er narrowly misses the mark. ITC mar¬
kets two versions of its Modula-2 sys¬
tem, the Modula-2 Software Develop¬
ment System, or M2SDS, and SDS-XP.
(See the review of M2SDS in Product
Watch, Cole Brecheen and Charles
Bradford, September 1986, p. 187.) Both
products contain the same editor/com¬
piler; the XP version includes additional
tools and source code files.
The Digi-Data 2000 PC tape system reads and writes
IBM/ANSI compatible, 9 track, 1600 bpi, V 2 inch tapes.
It comes complete with PC controller board, cables and
DOS software utilities. Just plug it in and run.
The 2000 PC provides file interchange in ASCII,
EBCDIC or binary. That means you can exchange data
between your PC and most minis or mainframes.
The 2000 PC also provides high speed disk backup and
restore functions.
For all the reasons you
need a 9 track tape on your
IBM PC/XT/AT, call us at
(301) 498-0200.
DIGI-DATA
CORPORATION
8580 Dorsey Run Road
Jessup, MD 20794-9990
(301) 498-0200 Telex 87-580
First In Value
In Europe contact: Digi-Data Ltd. • Unit 4 • Kings Grove • Maidenhead, Berkshire
England SL6 4DP • Telephone No. 0628 29555/6 • Telex 847720
CIRCLE NO. 123 ON READER SERVICE CARD
126
PC TECH JOURNAL
ITC offers a rich development envi¬
ronment with a windowing syntax-
directed editor/compiler. The editor is
the first pass of the compiler. Alt-key
combinations are used to insert syntac¬
tic skeletons, then blanks are filled in.
The editor “knows” the syntax of the
language: inappropriate statements can¬
not be entered, meaning that syntax is
checked, in effect, during program en¬
try. The editor also controls the format¬
ting of text lines: the user cannot, for
example, place two statements on a sin¬
gle line. Program source code is stored
in a compressed form, thus speeding
the compilation process.
As radical an advance as this editor
represents, it is a frustrating tool to
learn—knowing where and when to in¬
sert a syntactic skeleton takes time to
learn. All previous typing and program
editing instincts must be discarded.
The editor supports multiple, over¬
lapping windows, and text transfer be¬
tween windows. Code generation op¬
tions (for example, in-line 8087 code
and runtime error checking) are set via
a Ctrl-key combination, and remain in
force only for the duration of the devel¬
opment session within a window. To
generate object code, the user enters
another Ctrl-key sequence and the com¬
piler compiles the program source
code to object code. If an error is dis¬
covered at compile time, the editor is
positioned at the offending line.
Following a successful compilation,
the user exits the editing window and
calls up the linker, choosing the main
program module just compiled from a
menu of all compiled modules in the
current library. The linker then pro¬
duces a .EXE file and a symbol map in
the user’s DOS directory. The .EXE file
is fairly straightforward to follow with
SYMDEB. Care must be taken, however,
when tracing around INT E4H instruc¬
tions, which ITC uses to implement
calls for runtime services. Because the
parameters for the calls are placed as
data in-line below the INT instruction,
the user must not set a breakpoint di¬
rectly below the INT. Control does not
return to the location immediately fol¬
lowing the INT, and the debugger’s
breakpoint instruction will be confused
with parameter data.
This compiler is nearly complete in
its implementation of Modula-2, up to
the second edition of Wirth’s book.
Monitors cannot be created—this editor
simply does not permit the syntax. Defi¬
nition modules must explicitly export
their identifiers. Absolute variables are
not allowed, again because the editor
does not support the syntax. The com¬
piler recognizes strings as a special type
of variable, implemented in Turbo Pas¬
cal fashion, by specifying a maximum
physical length in the declaration. String
logical length is maintained in the first
byte of the array, and changes as the
string is manipulated.
The code model for the ITC com¬
piler follows the Intel/Microsoft stan¬
dard model. Parameters ara passed on
the stack, function procedure return
values are placed in registers, and the
called procedure cleans up the stack on
exit. The ITC benchmark results bear
this out—this compiler’s performance is
clearly in line with Logitech’s.
For low-level issues, access to 8086
registers is permitted by importing reg¬
ister variables from the SYSTEM mod¬
ule. The register variables can be in¬
cluded in assignment statements, rather
than being accessed as record fields or
via procedure calls. SYSTEM also pro¬
vides a set of routines to access the
hardware interrupt vectors. Interrupt
service routines written in Modula-2 can
be attached to hardware interrupt vec¬
tors. In-line assembly language code is
Lattice* Works
LATTICE ANNOUNCES
MICROSOFT WINDOWS
SUPPORT IN VERSION 3.2
Version 3.2 of the Lattice MS-DOS
C Compiler features full support for
Microsoft Windows—including the
“far” “near” and “pascal” keywords.
In addition, version 3-2 includes
the ability to generate more than 64K
bytes of static data and to declare
objects larger than 64K bytes. It also
includes improved support for ROM-
based applications via the “const”
data type. Version 3.2 is a significant
release because it eliminates Micro¬
soft’s claimed monopoly on future
MS-DOS C development tools. Now
that the Lattice MS-DOS C Compiler
supports a window interface, pro¬
grammers using Lattice C can avoid
the problems caused by switching
to a different compiler. $500.00
LATTICE NOW OFFERS
ENHANCED AmigaDOS
C COMPILER
Version 3.1 of the Lattice
AmigaDOS C Compiler offers a new
library with 100 more functions
than the standard AmigaDOS C
Compiler. What’s more, increased
library modularity and new address¬
ing modes help reduce load module
sizes by more than 20%. The new
version also features faster pointer
and integer math, faster IEEE floating
point routines, direct support of the
Lattice
(800)533-3577 In Illinois (312) 858-7950
Amiga’s FFP format floating point
library, and multi-tasking support.
With Version 3.1, Lattice has
broken free of the reliance on the
Amiga standard linker and object
file format. This new release includes
completely new expanded documen¬
tation, and a Lattice assembler and
linker which remain compatible
with previous software but allows
professional programmers to take
advantage of both the Amiga’s speed
and the industry’s standardization.
Lattice AmigaDOS C Compiler with
Lattice’s Text Management Utilities,
$225. Professional AmigaDOS C
Compiler with, Text Management
Utilities, Lattice Make Utility, Lattice
Screen Editor, and the Metadigm
MetaScope Debugger, $375.
AmigaDOS C Compiler $150.
LATTICE RELEASES NEW
VERSIONS OF C CROSS
COMPILER AND LINKER
Version 3.1 of the Lattice C Cross
Compiler to MS-DOS and version
2.12 of the Plink86Plus Overlay
Linker are now available for Sun and
Apollo workstations as well as the
DEC VAX Family of processors run¬
ning VMS, UNIX or Berkeley UNIX.
All Lattice C Cross Compilers
possess the same functionality and
generate the same code as the native
Lattice MS-DOS C Compiler. This
allows users to take advantage of the
larger systems’ speed and multi-user
capabilities when creating applica¬
tions for most popular PCs.
Contact Lattice Corporate Sales
for details.
TELEX 532253 FAX (312) 858-8473
INTERNATIONAL SALES OFFICES: Benelux: Ines Datacom (32)2-720-51-61
Japan: Lifeboat, Inc. (03)293-4711 England: Roundhill (0672)54675
France: Echosoft (1)4824.54.04 Germany: Pfotenhaur (49)7841/5058
Hong Kong: Prima 85258442525 A.I. Soft Korea, Inc. (02)7836372
Australia: FMS (03) 699-9899 Italy: Lifeboat Associates Italia (02) 46.46.01
CIRCLE NO. 160 ON READER SERVICE CARD
MARCH 1987
127
MODUIA-2
supported through the pseudo-proce¬
dure CODE, exported by SYSTEM. Pro¬
cesses are implemented only as corou¬
tines under ITC Modula-2. No provi¬
sions are made for multitasking.
The extensive libraries include
Wirth’s standard set. Some extra librar¬
ies provide screen graphics, including
support for region clipping and coordi¬
nate transformation, management of the
machine’s serial communications ports,
and ITC’s unique file system. The per¬
formance of Storage is slow, but it is
about equal to Logitech’s version.
The XP version includes a make
utility and a foreign object code import
facility. The latter facility is limited to
one code segment; it ignores FIXUPP
object records. (FIXUPP records indi¬
cate operations emitted by the assem¬
bler’s instructing the linker to place an
address at the designated location. For
more about object record formats, see
“.OBJ Lessons,” Steven Armbrust and
Ted Forgeron, October 1985, p. 62.)
This limitation renders the facility vir¬
tually useless because assembled in¬
structions within an imported segment
REQUIRED READING FOR AIL
IBM PC SYSTEMS EXPERTS
If you're a systems expert, microcomputer specialist, or MIS/
DP professional working with IBM PCs, you need the compre¬
hensive information PC TECH JOURNAL provides 13 times a year!
It's the only magazine that provides you with the technical
information to help you increase the performance of your
multi-component system. It talks to systems experts and systems
designers in the language you understand—about the appli¬
cations and products you have to know about!
As part of your annual subscription to PC TECH JOURNAL,
you'll receive the special PC TECH JOURNAL Directory issue pub¬
lished in November, the most comprehensive guide and index
to the products in the PC marketplace and PC TECH JOURNAL'S
coverage!
Don't leave a gap in your required reading, subscribe to
PC TECH JOURNAL now and save 50 %!
For faster service call Toll-Free 1 -800-852-5200 today!
JfJgL P- O. Box 2966-Boulder, CO 80322
Send me PC TECH JOURNAL for: SAVE 50 (
□ One year (13 issues) for $26.70.
□ Two years for $53.35.
Savings based on annual single-copy price of $53.35.
Mr./Mrs./Ms. _-— - —5 -
(please print full name)
Company _, ^ -—■- —-
Address _ ___ __——-
City State __ Zip---
□ Bill me □ Payment enclosed
Add $6 per year for postage outside USA, US currency only Please allow up to 60
days for delivery of first issue. Annual Basic subscription price Is $34.97.
cannot reference locations within the
segment, such as in-line tables.
Additional features to this package
are a calculator, an ASCII table, a clock,
and a file display utility. The system also
has provisions for exporting and im¬
porting source code modules to and
from DOS as ASCII files.
The system’s documentation is
good, although it is a bit unorganized.
However, the tutorial in the beginning
of the manual is a fine introduction to
Modula-2 programming.
The ITC system incorporates some
novel program development ideas. The
editor was one of the first syntax-
directed editors used for development
on the PC, and it is very efficient. The
compiler itself is reasonably fast and
compact. Yet, with all it has going for it,
this system has problems. The editor
hangs occasionally, without warning or
apparent reason, and the compiler
sometimes generates incorrect code.
For example, the statement
Boolean := (int > 0);
generates erroneous code. Moreover,
the compiler yields an “Expression too
complicated errors” message for the
most trivial of expressions, such as in
d := a*b + c*d;
which generates an error when the four
variables are defined as LONGINTs.
FOR loops with variable steps, ille¬
gal in Modula-2, are accepted by the
compiler and then generate bad code.
Changing the FOR loop index variable
is not ignored. (All of the other compil¬
ers generate code sequences that pre¬
serve the loop variable and restore it
with each iteration of the loop.) For
example, for the statement
FORi := 1 TO 10 BY k DO
j := j + 1;
END;
the compiler accepts this code, which is
itself an error, because no FOR loop
can have a variable step. (The k was
previously declared an integer variable.)
The disassembled code is as follows:
top: cmp i,10 ;check loop bounds
ja out
mov ds, cs:[0]
;get the module’s data segment
mov ax,j
add ax,l
mov j,ax ;j := j + 1
add i,4
TERROR! ‘4’ was pulled out of the air
jmp top
In the line where the step value is
added to the index value i, the code
128
PC TECH JOURNAL
adds constant value 4 to it. The 4 was
not specified in any way in connection
with the loop, and it is unclear how the
compiler decided to use it. If it had
chosen a 0 instead, the code would
have gone into an endless loop.
In spite of these seemingly major
problems, the M2SDS package is selling
well in Europe, where it was not avail¬
able in its earlier, more flawed, re¬
leases. Perhaps in time the product will
be improved and make a comeback in
the United States as well.
Logitech, Inc. Logitech’s Modula-2 ap¬
pears to be the clear leader in the Mod¬
ula-2 compiler field (in spite of the fact
that it, too, had a number of bugs in its
early releases). Also, before its several
components were unbundled, Logi¬
tech’s compiler was an expensive tool
for much of the user audience. (See the
review of Logitech’s “Modula-2/86” in
Product Watch, John T. Cockerham, Sep¬
tember 1986, p. 187.)
The Logitech system consists of a
compiler, a windowing editor, a linker,
and a .EXE file creation utility. The
compiler is available in two forms:
overlaid and fully linked. The overlaid
compiler runs in 256KB, and is avail¬
able with or without 8087/80287 numer¬
ic coprocessor support. The fully linked
compiler requires 512KB of RAM, but
allows more symbols and code space
and includes support for an 8087/287
and the 80186/286, a make utility, a win¬
dowing environment, and a source-level
runtime debugger. Other optional fea¬
tures to the product are a text window¬
ing library, a ROM package, and a
Turbo-Pascal-to-Modula-2 translator.
The Logitech editor is an impres¬
sive one, supporting multiple windows
and files. This editor has some aware¬
ness of Modula-2 syntax; it knows, for
example, that it must indent after cer¬
tain statements have been entered onto
a line. In addition, a syntax checker that
can be invoked from the editor via a
function key reports lapses in indenta¬
tion style. Both the compiler and linker
are invoked via a function key as well,
and the compiler passes error location
information back to the editor for posi¬
tioning of the cursor.
This system’s source code files
compile into .LNK files that the linker
processes into .LOD files. These .LOD
files can be converted by a utility into
.EXE files; otherwise, the user can call
the runtime system M2.EXE to load
.LOD files and execute them. The com¬
piler generates listing files by the user
setting a switch on the command line.
In addition, .REF files are produced for
use by the debugger.
The code model appears to be an
implementation of the full Intel/Micro¬
soft standard. Procedure activation
records are implemented through the
use of ENTER and LEAVE instructions
when compiling to an 80186/286. The
code is very fast, as evidenced in the re¬
sults for the benchmark tests. In look¬
ing at the code using SYMDEB, how¬
ever, the compiler appears to reload its
segment registers more often than is
necessary simply because the compiler
has no mechanism to detect that correct
values are already there.
Both versions of this compiler sup¬
port the definition of Modula-2 as out¬
lined in the second edition of Wirth’s
book; the third edition was published
after the compilers were released.
(Logitech is reportedly preparing an up¬
date to meet this most current specifica¬
tion.) Even so, the only significant dif¬
ference between the compiler and the
current definition of the language is the
compiler’s requirement that definition
modules explicitly export their identifi¬
ers. The system’s low-level facilities are
complete, with absolute addresses for
A Contradiction!
Running Under PC DOS
>750 million bytes formatted in two volumes for the "Eagle"
(one volume/drive)...M2361A can hold 552MB/volume...data transfer
rate up to 2.4MB/sec....data access time - I8ms/drive...variable interleave
capability...partitioning possible...drives built to mainframe specifications
with mainframe reliability...greater than 20,000 hours MTBF.
For further information contact:
Upper Bound Micro ^
18 Elizabeth Street, W. Conshohocken, PA 19428
(215| 825-0505 FAX (215) 828-8618
The "Eagle" is a trademark of Fujitsu America, Inc.
PC DOS is a trademark of IBM.
MARCH 1987
CIRCLE NO. 169 ON READER SERVICE CARD
129
MODULA-2
variable, interrupt access, in-line code
generation, and CPU register access.
Logitech’s libraries are quite exten¬
sive and provide binary-coded-decimal
(BCD) support, interrupt handling, DOS
services, random file I/O, a mouse in¬
terface, multitasking, and serial device
handling. Notably absent, however, is
screen graphics support.
This package offers the user three
options for debugging. First, in the ba¬
sic system, an execution error simply
produces a RAM dump. A postmortem
debugger interprets the RAM dump and
pinpoints the error. Second, the library
module Debug, if imported, traces the
stack. Finally, a powerful runtime de¬
bugger is also available.
The Logitech documentation is well
done. The manual is now perfect-bound
and includes a brief tutorial on the lan¬
guage. The index is complete, and the
definitions of the libraries are reprinted
in the manual for easy reference. In
short, this is a very good compiler and
a leader in this field, but it is in need of
some minor burnishing.
Modula Corporation. For a long time the
source of a p-code (pseudocode) imple¬
mentation of Modula-2, this company
has recently begun to produce a native
code implementation for the PC, called
PC Modula-2. The system includes a
compiler, a loader, and a linker; a win¬
dowing, source-level debugger is avail¬
able at extra cost. However, an editor is
not offered with this product.
The compiler is invoked from
DOS; its output is a .RLX file containing
the relocatable object code, and a .RFC
file with information for the debugger.
The compiler error messages are terse,
L its code model, the Mod¬
ula Corporation compiler
limits procedure parameter
lists to 16 words, which can
cause some problems.
but adequate. The user can control run¬
time checking through the use of
switches on the command line.
The language that is implemented
by this compiler conforms to the third
edition of Wirth’s report: definition
modules do not have to export their
identifiers explicitly, priority modules
and multitasking are available, and
strings are not a predefined type of the
language but are arrays of characters
terminated by a null character.
This system’s low-level facilities
include CODE procedures (which are
short in-line assembly language rou¬
tines), implementation modules written
in assembly language, absolute address¬
ing, and I/O device management. Note,
however, that the assembly language-
level implementation modules must fol¬
low a rigid format in order for the
linker to load them properly.
The code model for the Modula
Corporation compiler is not the Intel/
Microsoft standard. The compiler limits
procedure parameter lists to a total of
16 words in length, which can be a
problem—open arrays require 3 words
of parameter space for the address and
the size of the array, VAR parameters re¬
quire 2 words for the address, and val¬
ue parameters require as many words
as their base types are large.
This Modula-2 compiler does not
use the RET instruction to return from a
subroutine. Instead, the compiler emits
an indirect jump instruction, taking its
destination address from the stack at
the point where the CALL instruction
had placed the return address, and leav¬
ing the calling routine to clean up the
stack. The performance overhead ex¬
acted by this process is evidenced in
the procedure call benchmarks.
The results for these tests can be
puzzling without the knowledge that
this compiler was ported from another
machine and, more significantly, that
the chosen code model underemploys
the instruction repertoire of the 8086.
This is evidenced by the fact that the
Modula compiler stores its pointers
with the segment portion in the low-
order word—in reverse of the Intel
standard. This prevents the compiler
from using the pointer loading instruc¬
tions, LDS and LES.
The generated code is also ineffi¬
cient at times. In setting up a CASE
statement, for example, the address of
the selected code is loaded from the
jump table into a register and a jump is
taken relative to the register rather than
out of the table itself.
However, the balance of its scores
in the benchmarks are very good. This
compiler turned in the shortest time for
the cardinal arithmetic test. (During the
real number test, though, the library
halted execution of the benchmark with
an error message claiming an attempted
conversion of too large a floating-point
number into an integer. It is unclear
why sqrt(sin(ln(pi))) would require an
integer conversion at all, even for an
intermediate value.)
ONE TOOL DOES IT ALL!
dszm
53/1/1110 NOAJBOV
OAONF
SN'Ni-H sn_^ $79.00
cccocc c _
RECLAIM
$49.95
UNFORMAT
$??.??
You could pay $288.85 or ONLY $99.00
To Order Call 800-523-0258
Paul Mace®
SOFTWARE^/
123 N. First St., Ashland, OR 97520
Disk Optimizer. Norton Utilities.
Lighting, and DS-Recover are
trademarks of Soft logic, Peter
Norton Computing. PCSG, and
Design Software.
130
CIRCLE NO. 101 ON READER SERVICE CARD
PC TECH JOURNAL
The libraries for this compiler in¬
clude Wirth’s standards and are other¬
wise comprehensive. In addition, the
system supports multitasking, string
management, graphics, and long sets
(those with 65,534 elements). The de¬
bugger is an interesting one, with multi¬
ple screens that permit the user simul¬
taneous examination of the stack, global
variables, and registers. The Modula
Corporation documentation is very
thorough and well indexed.
PCollier Systems. This consulting firm has
produced a very compact implementa¬
tion of the language. The Modula-2PC
package includes compiler, editor, and
linking loader. The editor is a standard
full-screen utility with its own set of
keystroke commands that are unlike any
other and do not use the PC’s function
keys. It communicates with the com¬
piler through the DOS environment;
error information is passed back to the
editor for cursor positioning.
The language implementation is
complete as specified in the third edi¬
tion of the language report. The WHILE
statement is extended to permit mul¬
tiple Boolean expressions and statement
sequences. For example, in
WHILE
(negative) DO j := j -I- 17 I
(i > 0) DO j := j — 17
END
the control sequence loops through
conditional expressions until the first
true expression is encountered. Its asso¬
ciated statements are executed, then
control returns to the top of the WHILE
loop. The loop terminates when all of
the conditional expressions are false.
PCollier’s low-level facilities are
adequate. Its CODE procedures are
macros for small sequences of machine
instructions. Once defined, these CODE
procedures can be invoked simply by
naming them; they will be expanded
into in-line code at that point in the
program. The CODEGEN pseudo-proce¬
dure, however, is closer in concept to
Turbo Pascal’s INLINE statement, and
permits the generation of lengthy as¬
sembly language sequences. External
.COM files can be included in the ob¬
ject code using the LOADASM proce¬
dure. Register access in Modula-2 state¬
ments is not allowed. Software inter¬
rupts can be called through a proce¬
dure imported from the DOS module.
The real number support provided
by the system depends upon which of
two included versions of the loader is
used to create the program: one uses
the 8087 coprocessor, the other does
not. The 8087 “detect or emulate” deci¬
sion cannot be postponed until run¬
time. The loader will dynamically link
to imported modules as they are called;
it also can generate a .EXE file.
The code model for this compiler
differs from the Intel/Microsoft stan¬
dard. First, the process of calling proce¬
dures is handled by a global module
manager. The manager is passed a key
for the requested module. The targeted
procedure is located and control passed
to it. If the targeted procedure is not
present in RAM, it is located on disk
and loaded. Second, arguments are
passed on the stack to the module man¬
ager, which then removes the parame¬
ters from the stack and places them into
the data segment for the routine. If a
recursive call is made, the previous in¬
vocation’s data segment is preserved
and the current set of parameters is in¬
stantiated. This is not very efficient, as
the benchmarks show.
The code generated by this compil¬
er for handling Boolean expressions in¬
side IF statements is different from
most compilers. This generated code
calculates a Boolean value for the ex¬
pression and tests it against TRUE,
jumping on the result of the compari¬
son. The calculation requires one set of
jumps; the test is an additional set. This
is a less efficient method than that of
the other compilers, which emit direct
comparisons and jumps.
PCollier’s arithmetic code is also
less efficient than that of the others.
Modula-2PC uses the 8086’s BX register
for interfacing to RAM. Note (in figure
2) the two MOV instructions at the end
of the code: one moves the result into
BX, the other moves BX into RAM.
The libraries for this compiler are
complete and include a nice screen,
window, and menu management mod¬
ule. The Terminal module, however,
does not follow the standard: Termi-
nal.Read takes its first input from the
DOS command line. Coroutines are
supported, but multitasking is not.
Clearly, the strength of the PCollier
implementation is its documentation.
The book is exceptionally well written
and indexed. With its fine tutorial, it
easily could retail as an introduction to
Modula-2 on its own.
Pecan Software Systems, Inc. This company
acquired Volition Systems and subse¬
quently upgraded and rereleased Voli¬
tion’s Modula-2 product under its own
label. Pecan Modula-2 operates in the
Power System environment, Pecan’s
new name for the UCSD (and later Sof-
Tech) p-System, a virtual machine envi¬
ronment that has existed since the mid-
1970s. This compiler is invoked from
PROTECT
YOUR COPIES
Of
nn
ILJ
m
OURNA
Make your collection of PC TECH
JOURNAL a handsome addition
to your office or home—and pro¬
tect and organize them for easy
reference!
PC Tech Journal Magazine
Binders and cases are made of
durable luxury-look leatherette
over quality binder board. Custom
designed for PC Tech JOURNAL,
every order receives FREE transfer
foil to mark dates and volume
numbers.
FOR FAST SERVICE CALL
TOLL-FREE 1-800-972-5858
MAGAZINE BINDERS
Hold your
issues on
individual
snap-on
rods. $8.95
each; 3 for
$25.75; 6 for $48.75.
OPEN BACK
CASES
Store your copies for
individual reference. $795
each; 3 for $22.95; 6 for $43.95
TB10! P.O.Box 5120
OURNAL Philadelphia, PA 19141
Please send □ Binders □ Cases Quantity_
Payment enclosed $_* Add $1 per order for
postage & handling. (Outside USA, add $2.50 per unit
ordered, US currency only.)
Charge my:
□ Amex □ Visa □ MC (Minimum order $10.)
Card No-Exp. Date_
Mr./Mrs./Ms._
please print full name
Address_
City__
State_Zip_
*PA residents add 6% sales tax.
MARCH 1987
131
MODULA-2
the Power System and emits either
p-code or native 8086 code. The p-code
is threaded code for execution by the
Power System’s virtual machine inter¬
preter. Pecan has ported the Power Sys¬
tem and its virtual machine to several
different computing environments.
The Power System runs above
DOS, but does not use DOS for its file
operations. File I/O is performed direct¬
ly by the Power System, using an anti¬
quated sector system that requires allo¬
cating a given number of sectors to a
file at the time of a file’s creation. De¬
leting a file on a Power System virtual
volume leaves a “hole” of unused sec¬
tors the same size as the deleted file.
When many create and delete cycles
occur on a volume, it can become ex¬
tremely fragmented, and free sectors
need to be collected into a single block
by an operation called Krunch.
The editor is a fairly standard text
entry model. Provisions are included
for editing multiple files, with text
transfer between files, function key
macros, and automatic indentation. This
editor can perform source code log-
Virtually all mainframe and mini
systems already have 16QQ BPI
V 2 ' 1 9 track tape. The Tape Linx
subsystem provides the necessary
connection for PC users.
Tape Linx moves most data base
information from mainframes and
translates it automatically into a
format readable by the PC.
Tape Linx provides the means for
decentralizing corporate informa¬
tion processing by allowing branch
offices to access central data
resources. Because no physical
link is ever created with the main¬
frame, Tape Linx is non-invasive.
Overland Data, Inc.
Answers on Tape
5644 Kearny Mesa Road
San Diego, CA 92111
[619] 571-5555
754923 OVERLAND
9 Track tape support for
personal computers
XENIX and MS-DOS support
A standard data interchange
medium for government and
industry
The Tape Linx package includes
DEPOT™, a data interchange
utility; FLASHBAK™, a high¬
speed, file-oriented back-up utility;
and other MS-DOS programs.
Overland Data’s professional
technical staff provides telephone
support for all ODI products, and
will be happy to discuss your
specific application requirements.
XENIX and MS-DOS are Registered
Trademarks of Microsoft Corp.
CIRCLE NO. 185 ON READER SERVICE CARD
ging, which automatically inserts a com¬
ment into the source file, containing
the date and a line of explanation for
changes to the program source code.
Unlike UCSD Pascal, Pecan’s Mod¬
ula-2 editor does not have an interface
to the compiler; therefore, the user
must save the work in progress and exit
the editor before invoking the compil¬
er. Compile-time errors are not com¬
municated to the editor for cursor posi¬
tioning in the source file.
The compiler accepts standard
Modula-2 syntax according to the third
edition of Wirth’s report, including
module priority. Errors are correctly
spotted and the associated messages are
informative. Compiler options are em¬
bedded as comments within the text of
the module being compiled.
Pecan has added several extensions
to the Modula-2 language in this imple¬
mentation, mostly to accommodate fea¬
tures of the Power System. BCD vari¬
ables are supported and are defined us¬
ing the predefined type PACKED. Func¬
tion procedures may return any type as
a result, including RECORDS.
However, some restrictions cloud
the differences between CARDINAL and
INTEGER variables. For example, cardi¬
nal division cannot be performed when
an operand is greater than 32,767. Simi¬
larly, case labels that are of type
CARDINAL cannot exceed 32,767.
This system’s low-level facilities are
geared toward p-code: no direct access
to the host system is allowed. The user
can generate p-code routines using sev¬
eral pseudo-procedures.
In its default mode, this compiler
directly emits p-code into Power System
.CODE files for implementation and
program modules. Definition modules
compile to .SYM files, which provide
the necessary symbolic information to
the compiler when the module is im¬
ported. The native code generator is in¬
voked by setting a compiler directive
option. Configuring the Power System
for an 8087 requires changing the name
of die default code generator and
Power System runtime library files.
Once so configured, the 8087 is re¬
quired to be present for a floating-point
program to run; otherwise, the program
will hang die computer.
The performance of the native
code generator can be seen in the
benchmark results and in figure 2. This
compiler, like the PCollier product,
actually calculates a Boolean value for
simple comparison expressions, then
tests the state of the Boolean value,
rather than simply comparing the two
operands and branching on the state of
132
PC TECH JOURNAL
UnleashThe Most Powerful
DevelopmentTbols
OnThe Planet DOS.
UNIFY DBMS/DOS.The UNIX Worid Leader
Brings ANewDimensionTb DOS Application Development.
What happens as the DOS world expands? As a
new generation of hardware takes over? As networking
becomes more important? The potential is enormous.
But until now, the tools to achieve it have been limited.
Now a leader from another world unleashes that
potential: UNIFY® DBMS. The leading relational
DBMS in the UNIX™ world. And now, the most
advanced set of application development tools in the
DOS world.
With UNIFY DBMS, DOS developers have new
power to build more sophisticated applications than ever
before possible.
The power to write high performance “C”
programs that will access the data base, using
Unify’s Direct Host Language Interface.
The power of an industry standard
query language—SQL.
The power of unmatched speed in pro¬
duction applications. Only UNIFY DBMS is
specifically engineered for transaction through¬
put. With unique performance features like
PathFinder™ Architecture multiple access meth
ods, for the fastest possible data base access.
See Us At
UniForum
January 20 - 23, 1987
Washington Convention Center
Washington D.C.
The power of comprehensive pro¬
gram development and screen man¬
agement tools. Plus a state-
of-the-art fourth generation
report-writer.
What’s more, with UNIFY
DBMS, the potential of networked
applications becomes a reality. Unlike
DBMS systems which were originally
single-user (and which have a long stretch
to accommodate more users), UNIFY DBMS
is a proven multi-user system.
And because UNIFY DBMS/DOS is
the best of two worlds, it offers you the most
powerful benefit of all: DBMS applications that
can grow as your needs grow. From single user
DOS. To networked DOS. To multi-user UNIX.
All without changing your applications.
Call the Unify Information Hotline
for our free booklet: The New DOS World.
(503) 635-7777
uniFy
CORPORATION
4000 Kruse Way Place
Lake Oswego, OR 97034
© 1986 Unify Corporation. UNIX™ is a trademark of AT&T Bell Laboratories.
CIRCLE NO. 156 ON READER SERVICE CARD
MODULA-2
the flags. For example, the code gener-
ated for
IF i > 0 THEN ... is
xor
ax,ax
mov
dx,i
cmp
dx,0
jnz
notzero
inc
ax
notzero:
shr
ax,l
jc
truepart
jmp
falsepart
truepart:
The result in inefficient code, due to
the fact that the native code generator is
directly translating individual p-code
operations into 8086 machine code. The
native code generator never “sees” the
source code and thus is unable to gen¬
erate code specific to the larger pro¬
gram context, such as an IF statement.
The Pecan libraries provide most
of the standard Modula-2 functions, and
multitasking and coroutines are sup¬
ported. Decimal arithmetic on BCD
variables is an additional feature. Note
in the benchmarks that this system ran
out of heap space when executing the
linked list creation test.
The porting of the benchmark pro¬
grams was more difficult on this system
than on any of the others. Its Time
function is undocumented; but experi¬
mentation revealed that the resolution
of the clock was in 60ths of a second.
Thus, the benchmark times are the re¬
sult of dividing by 60 the actual times
turned in by the compiler.
The Pecan documentation is good,
and the index is thorough, but it pre¬
supposes a working knowledge of Pas-
C learly, a restrictive aspect
of Pecan Modula-2 is the
Power System. Although truly
portable, it is annoyingly
different from DOS.
cal. Although the coverage of the librar¬
ies is adequate, some lapses undercut
its overall effectiveness. The format of
Time and a description of the actual
representation of strings are absent.
The worst aspect of working in Pe¬
can Modula-2 is the Power System itself.
Although truly portable, it is annoyingly
different from DOS. For example, the
screen clears, rather than scrolls, be-
DOUBLE
YOUR STORAGE CAPACITY
The new PERSTOR 200
Series Double Capacity
Controllers increase
the storage capacity of
your ST506/412 Win¬
chester hard disks by 90% or more.
Advanced RLL encoding technology is
used to increase data transfer rate to 9
and 10 megabits per second, and a 56
bit error correction
code is used to assure
data integrity. What’s
more, it works with both
RLL and MFM drives
with plated or oxide media*
To place an order or become a dealer
call (602) 948-7313.
PERSTO T?
Sensible solutions for your hard disk problems.
Systems and Software, Inc.
7825 East Redfield Road
Scottsdale, Arizona 85260
*call for specific drives.
CIRCLE NO. 231 ON READER SERVICE CARD
tween programs. This inhibits the
screen from acting as short-term storage
for program results across several pro¬
gram invocations. The user interface is
about as clumsy as that of DOS—one-
character commands—but without
many of the redeeming features of
DOS, such as default path specifications,
command line parameters to programs,
and automatic file maintenance.
The strength of the Power System
lies in the diversity of machines to
which it has been ported. With Pecan
Modula-2, true portability can be
achieved if the programmer limits him¬
self to the high-level features of the lan¬
guage. For low-level applications, the
p-code degrades program performance
and limits programmer options.
Workman & Associates. The Australian-
born FTL (faster than light) compiler is
distributed in the United States by
Workman & Associates. This powerful
compiler comes with a useful editor, an
assembler, and a linker. A memory-resi¬
dent debugger is an added feature.
As in Turbo Pascal, the compiler
and the editor can both load and re¬
main resident during an editing session.
The compiler retains .SYM symbol table
files in memory, speeding compilation.
(.SYM files are the result of compiling a
definition module.)
The editor itself can be configured
to use either Micropro’s WordStar or
Unipress Software’s Emacs control key
sequences for commands. The user can
set up keyboard macros, but language
constructs cannot be inserted by Alt-key
combinations, as they can be in the ITC
editor. The editor is limited to three
fixed-size windows containing up to
three simultaneously opened files. The
user can set compiler options from a
screen in the editor, and the compiler
can be called up quickly. The linker is
easily accessed from the editor as well,
but promptly runs out memory in all
but the largest machines.
The compiler is (as claimed) very
fast, with a compile time benchmark of
13 seconds. This one-pass system gener¬
ates code for a small memory model:
64KB of data and 64KB of code. The
compiler output is in the form of .SMR
files, which are fed to the linker. The
code it generates is reasonably tight,
and the times for the FTL compiler in
the benchmarks reflect the advantages
of the small memory model. The code
model is similar to Intel/Microsoft:
Parameters are pushed onto the stack
from left to right. The called procedure
cleans up the procedure activation re¬
cord. Functions return their results on
the stack rather than in registers. CASE
134
PC TECH JOURNAL
that dorituseournew
_ VEGADeluxe EGAcard
Pretty soon, this 4
might become standard m
computer equipment.
Unless, of course, our VEGA Deluxe gL
card does first.
And that’s a distinct possibility. After all, this short-card
video adapter offers 37% higher screen resolution than standard EGA cards.
Visualize it: your existing software sharper and clearer by more than a third.
Programs like Lotus 1-2-3 and Symphony, with 132 columns and 43 lines. Microsoft
Windows in 640 x 480, too. And AutoCAD. As well as EASYCAD, EGA Paint, GEM,
Dr. Halo II, InA*Vision, Windows Draw, Windows Graph, and much more.
In fact, with all this information on the screen, there’s only one thing there’s less of.
Strain on your eyes.
That’s because the VEGA Deluxe gives you both 640 x 480 and 752 x 410 reso¬
lution. (Of course, for more than 640 x 350, the VEGA Deluxe requires a Multisync®
or equivalent.)
The VEGA Deluxe is also compatible with every other
video standard: EGA, CGA, Hercules and MDA. And when
used with a compatible monitor, it automatically selects
which mode is right for your software’s needs.
At Video Seven, we’ve sold over 200,000 EGA cards
to people who’ve seen the difference. If you’d like to see the
difference for yourself, just call 1-800-238-0101 for the name of the Video Seven
dealer nearest you. (In California, call 1-800-962-5700.)
The VEGA Deluxe. It puts everything in proper r
Video Seven Inc., 550 Sycamore Drive,
Milpitas, CA 95035.
[ DEO WS EVEN
We make a dear difference.
zi-fr . , Ar , .j , t vwuiyuuux, \ i aim ±\ia ouu.yyuia. 3 mu, — ju'igudi ivcbedxt.ii v/urp., ui. ndiu—rneaid v^yuemeucs, invision,
Windows Draw, Windows Graph-Micrografx Inc.; Registered trademarks: Video Seven-Video Seven Inc., Lotus 1-2-3, Symphony - Lotus Development Corp., Microsoft-Microsoft Corp.
Video Seven reserves the right to change specifications without notice.
CIRCLE NO. 204 ON READER SERVICE CARD
MODULA-2
statements are implemented as a series
of comparisons and jumps—a result of
the compiler being one-pass.
FTL provides runtime checking
facilities that can be disabled through
the use of a compiler switch. The com¬
piler will supply additional information
to the linker for creating a procedure
map that contains offsets of procedures
into the generated .COM file.
This compiler would not accept a
priority specification for program mod¬
ules. It did, however, accept and com¬
pile correctly several lines of Modula-2
that were not separated by semicolons.
The compiler checks several environ¬
ment strings governing the search
paths, default extensions, and the direc¬
tories to place output.
An assembler is included for gen¬
erating low-level routines. The assem¬
bler generates code for the linker and
supports pseudo-operations that allow
the assembled module to import sym¬
bols from FTL .SYM files. No facilities
are available for generating in-line ma¬
chine code. The linker optionally dis¬
plays a symbol map to the console. The
user must redirect linker output in or¬
der to capture this map. A .COM file is
produced, which is very easy to trace
through using SYMDEB.
ADDRESS variables, WORDS, and
BYTEs are available from the definition
module System. The library module
MSDOS contains the routines for ac¬
cessing the system BIOS interrupts, and
calling for DOS services. Registers are
supplied to these routines as a record.
Other FTL library modules include
Storage, for heap management; Pro¬
cesses, for multitasking and process
synchronization; Streams, for file
streams; Terminal, for terminal I/O;
Command, for command-line process¬
ing; CallProg, for program spawning;
Maths and Solve, for floating-point oper¬
ations; GetEnvName, for environment
strings; and Strings, for string manipula¬
tions. The performance of the heap
manager seems very impressive, but it
has very little heap to manage.
The two manuals included with
this package are thin, but well written.
One is a description of CP/M implemen¬
tation of the language, but it includes a
reasonable introduction to Modula-2.
The other describes the DOS version of
the system, and makes frequent refer¬
ences to the CP/M manual.
The source code for the editor is
available at extra cost. Despite the limi¬
tations of the small model, this compil¬
er is a good value and offers an ade¬
quate introduction to the language.
MODULAR DIRECTIONS
The six compilers reviewed here pre¬
sent the project manager with a variety
of choices. If portability across a num¬
ber of machines is important, the ob¬
vious choice is Pecan, in spite of the
drawbacks of the Power System and
p-code. If a manager is designing for
PCs alone, then the Logitech system or
the Modula Corporation compiler fits
the bill. For first-time Modula-2 users,
the FTL and the PCollier compilers pro¬
vide excellent introductory documenta¬
tion and are reasonably priced. The jury
is still out on the ITC product, but it is
bound to improve.
Their overall quality notwithstand¬
ing, none of these compilers puts Mod¬
ula-2 in a position to challenge the su¬
premacy of C in PC programming (yet).
Only when these products allow foreign
object code integration, using the
Microsoft standard, will Modula-2 begin
to take its true place in the PC market.
In another direction, a Modula-2 com¬
piler that incorporates Microsoft Win¬
dows capability would, of course, prove
a noteworthy step. The development of
Do You Ever Get the Feeling
That No One Speaks Your Language?
Arity/Prolog.
The Language That Spans the Generation Gap.
Software that roars.
gf/yity listens to what you ask for. You want a serious, versatile
language that will go the distance for you. There are two very
good reasons for you to use Prolog—to do your work smarter
and faster. That'sexactly what the Arity/Prolog development
environfne|t^|jj^elp you do. Our powerful tools, based on
the general purpose programming language Prolog, will signif¬
icantly reduce your development time and allow you to solve a
wide range of applicatioruproblems.
— No translation required Our development environment for
the IBM PC family and all MS-DOS compatibles includes the
|: Arity/Prolog Compiler and Interpreter, the Arity/Expert Sys¬
tem, and Arity/SQL. And you can tie them all together. You
can interface with several other programming languages and
build extensions to your existing applications. You'll be truly
multilingual —what better way to span the generation gap?
I r
It can take you to new places You'll discover amazing speed,
power, and flexibility using the Arity/Prolog programming
environment, with its one gigabyte of virtual memory and
fast, compact compiled code, for conventional applications.
And if you’re working in new territories, like expert systems or
sophisticated database management systems, you'll be speak¬
ing the native tongue.
Speak it freely Our products are not copy protected and we
charge no royalties, so you can use them in as many end-user
applications as you'd like. Why keep the language of solutions
all to yourself?
Join the thousands of assembly and C programmers who
already use Arity/Prolog—the language of solutions.
Call 1-800-PC-ARITY Today.
Masschusetts residents call 617-371 -1243.
ARITY CORPORATION
30 Domino Drive, Concord, MA 01742 U.S.A.
1-800-722-7489 or in Massachusetts call 617-371-1243
CIRCLE NO. 136 ON READER SERVICE CARD
136
PC TECH JOURNAL
Him lour Sjystem/3X
IntoThe Perfect Host Wth
PCOX Minology
PCOX"5250 products
make your System/3X
treat your PCs like
members of the family.
Your System/3X and your
PCsalready live together. Nowthey
can work together, too. Thanks to
PCOX Technology.
With PCOX 5250 connec¬
tions, your PCs enjoy the full
privileges of a 5251 Model 11,5291
or 5292.
Which means your PCs can
access and transfer files from your
System/3X data base, use its host
as a departmental processor, or
participate in your company’s dis¬
tributed SNA network.
MORE WAYS TO SAY HELLO.
The PCOX 5250 series comes in
twinax and remote versions-one
for Jocal connections, and one for
connections over phone lines.
PCOX 5250 products come
in twinax and remote versions, so
PCs can enjoy S/3X connections
in person or over phone lines.
And both versions support up
to seven concurrent host sessions.
No competing product delivers
more.
So let PCOXTbchnology open
doors between your System/3X
and your PCs.
Call CXI today toll-free.
800-225-PCOX
In California, call 415-424-0700.
m
CXI, Inc., 3606 West Bayshore Road
Palo Alto. CA 94303.Tfelex: 821945
PCOX and all PCOX products are trademarks of CXI, Inc.
CIRCLE NO. 217 ON READER SERVICE CARD
UNIX TOOLS FOR YOUR PC
MODUIA-2
PC/VI
UNIX’s VI Editor Now Available For Your PC!
Are you being as productive as you can be with your
computer? An editor should be a tool, not an obstacle to
getting the job done. Increase your productivity today by
choosing PC/VI — a COMPLETE implementation of
UNIX* VI version 3.9 (as provided with System V
Release 2).
PC/VI is an implementation of the most powerful and
most widely used full-screen editor available under the
UNIX operating system. The following is only a hint of the
power behind PC/VI:
• Global search or search and replace using regular
expressions
• Full undo capability
• Deletions, changes and cursor positioning on character,
word, line, sentence, paragraph, section or global basis
• Editing of files larger than available memory
• Shell escapes to DOS
• Copying and moving text
• Macros and \Aford abbreviations
• Auto-indent and Showmatch
• MUCH, MUCH MORE!
Don't take it from us. Here's what some of our customers
say: “Just what I was looking for!", "It's great!", "Just like
the real VI!". "The documentation is so good I have already
learned things about VI that I never knew before." — IEEE
Software. September 1986.
PC/VI is available for IBM-PC's and generic MS-DOSf
systems for only 8149. Included are CTAGS and SPLIT
utilities.TERMCAP function library, and an IBM-PC specific
version which enhances performance by as much as
TEN FOLD!
PC/TOOLS
What makes UNIX so powerful? Sleek. Fast, and
POWERFUL utilities! UNIX gives the user not dozens, but
hundreds of tools. These tools were designed and have
been continually enhanced over the last fifteen years! Now
the most powerful and popular of these are available for
your PC! Each is a complete implementation of the UNIX
program. Open up our toolbox and find:
• BFS • DIFFH • OD • STRINGS
• CAL • DIFF3 • PR • TAIL
• CUT • GREP • SED • WC
• DIFF • HEAD • SEE
All of these for only $49.00: naturally, extensive
documentation is included!
PC/SPELL
Why settle for a spelling checker which can only
compare words against its limited dictionary database
when PC/SPELL is now available? PC/SPELL is a complete
implementation of the UNIX spelling checker, renowned
for its understanding of the rules of English! PC/SPELL
determines if a word is correctly spelled by not only
checking its database, but also by testing such
transformations as pluralization and the addition and
deletion of prefixes and suffixes. For only849.00, PC/SPELL
is the first and last spelling checker you will ever need!
Buy PC/VI and PC/TOOLS now and get PC/SPELL for
only $1.00! Site licenses are available. Dealer inquiries
invited. MA residents add 5% sales tax. AMEX, MC and Visa
accepted without surcharge. Thirty day money back
guarantee if not satisfied! Available in 8", 5 l A" and 3 W
disk formats. For more information call today!
•UNIX is a mutrinurk of SINT *MS l)OS is a iraih-iiurk nl Mlmraili.
CUSTOM SOFTWARE SYSTEMS
P.O. BOX 678 • NATICK, MA 01760
617 * 653 * 2555
H
O
o
r
CO
Ti
o
9
<
O
CIRCLE NO. 261 ON READER SERVICE CARD
a Windows application, with its large li¬
brary of routines and lengthy header
file, would be speeded up considerably
by taking advantage of Modula-2’s sepa¬
rately compiled modules. The strength
of this language is in its ability to spot
type mismatches in procedure calls—
this is a situation that often generates
runtime errors in G.
Modula-2 represents the future in
large-scale programming—the develop¬
ment of a standard is important. The
software engineering features that it
contains are shared only by Ada. Given
the expense of creating software, it
seems inevitable that Modula-2 will be¬
come the language of choice for many
software developers. I Sinigun ffiHI
Interface Technologies Corporation
3336 Richmond\ Suite 200
Houston, TX 77098
8001922-9049; 713/523-8422
M2SDS and SDS-XP
CIRCLE 345 ON READER SERVICE CARD
Logitech, Inc.
805 Veterans Blvd.
Redwood City, CA 94063
415/365-9852
Modula-2
CIRCLE 346 ON READER SERVICE CARD
Modula Corporation
1673 W. 820 North
Provo, UT 84601
801/375-7400
PC Modula-2
CIRCLE 347 ON READER SERVICE CARD
PCollier Systems
7925-A N. Oracle Road, Suite 390
Tucson, AZ 85704
800/522-2060; 800/654-7396
Modula-2PC
CIRCLE 348 ON READER SERVICE CARD
Pecan Software Systems, Inc.
1410 39th Street
Brooklyn, NY 11218
718/851-3100
Modula-2
CIRCLE 349 ON READER SERVICE CARD
Workman & Associates
1925 E. Mountain Street
Pasadena, CA 91104
818/791-7979
FTL
CIRCLE 350 ON READER SERVICE CARD
John T. Cockerham, M.D., is a cardiologist at
The Children's Hospital in Boston and is on
the faculty of Harvard Medical School. His
most recent articles for PC Tech Journal were
“Evaluating the EGA: The EGA Standard,"
October 1986, p. 48, and “Evaluating the
EGA: The EGA Spectrum ” October 1986,
p. 80 and November 1986, p. 147.
138
PC TECH JOURNAL
Here's a plug
fordBASE.
Clipp ^1
EQEJMMfiEl^BREtB^ For information contact:
% Nantucket
Nantucket Corporation
ESfflSSSx*
(213) 390-7923
CUPP*' NETWORKS DBASE APPUCAVtONS
• o riiDoer’s new networking cap calls for
applications, using O’® p ro grams to run on networks tot support DOS
This new release compiles prog ^ of greater .
networking functions, plus single-user j e d no runtime module, no licensing fee
Compiled Applications can be 0 f ^ ow many users are connected to a
or royalty. And there is no eX ^ 3 packs even more of Clipper’s famous speed.
Clipper network. Plus the new release
single-user and networking Memory support, additional functions and improved
The new Clipper also sports E P protected.
memof,eld,ThenewJa^ed— ^retail price of S^-Kegistered users ol
PI inner AutUtnn oO IS uva
* (MOO Clipper and Nantucket are trademarks of Nantucket Corporation.
version for 513V. Other products trademarked by others. Copyright 1986. Nantucket Corporation.
Clipper may upgrade to the new circle no. 224 on reader service card
♦ «, ♦ A ♦ V,
4 4 ♦ ♦ t 1
♦ 4. 4 »* V
^ ^ . ♦ + Lk
♦ Hnte^ci '*|lp
Pfix86/;/uy
PforCe
Plink86/;/f/.s
PC BRAND
NOW PFEATURES
PFANTASTIC
c 0^tu^'
T oday's professional programmer demands high performance
tools that speed up and enhance the application development
process. That's why more programmers rely on one company for
the best engineered, highest performance tools available-
Pheomx.
P hoenix offers a full line of powerful, yet easy-to-use. tools
that help programmers more efficiently write, test and
deliver the best applications possible. Complete, fully detailed
documentation accompanying each tool enables quick mastery of
the product In addition, all Phoenix tools are backed by full-time
customer support professionals respected throughout the indus¬
try for their commitment and expertise. As a result, many
Phoenix tools are already established as industry standards and
others are fast on their way.
Flink™ 86 plus
P link86 plus is the only linkage editor
containing advanced overlay capa¬
bilities. It handles any compiler or
assembler producing standard Intel or
Microsoft OBJ files, including COBOL
and FORTRAN. Lattice C. Cl C-86,
Microsoft/IBM languages, and
mbp/COBOL. Virtual memory manage¬
ment ensures ample capacity for sym¬
bol and common block names (35,000).
Plmk86 plus supports an unlimited size
file, an unlimited number of modules
and up to 4,095 overlays nested up to
32 deep. Merges object modules,
caches overlays in extended or ex¬
panded memory, and automatically
reloads overlays upon function return.
Includes Plib86 object library manager.
List: *495 PC Brand: *325
Plib™ 86
P lib86 is an object module librarian
for Microsoft and Intel format
object modules and libraries. With
Plib86, you can add, delete or extract
modules to or from libraries, and
explode a library to its component
modules with one command. Plib86 also
produces program cross-reference
listings in various formats to a disk file,
screen or printer.
Originally listed at $195. Plib86 is now
included with Plink86 plus.
Ptel
A Pfantastic communications program
for use with most popular modems
such as Hayes and compatibles. DEC.
Racal Vadic, Anchor, US Robotics and
Novation. Ptel automatically adapts to
Ttelink, XModem. Kermit or Modem 7
for CRC checking and for ufn and afn
(i.e. "wildcard") file name list transfers,
if the bulletin board or the other end
computer supports them. With Telmk,
you'll even get a forecast of file trans¬
mission time, always useful in controll¬
ing telephone expenses.
In addition to saving received files,
Ptel can create and save a transcript of
the session commands and messages.
Highly configurable, with choices
temporary or saved as altered defaults.
Unique telephone directory of bulletin
boards and other services, allowing
access by service name. Ptel runs fully
interactive or can be batch driven from
a script. You can even exit to DOS
move files around or run another appli¬
cation and then return to Ptel. all with¬
out dropping the line.
List: *195 PC Brand: *115
Pasm™ 86
P asm86 provides both quick assem¬
bly and superior syntax checking,
plus a wealth of other features and
utilities to maximize programming pro¬
ductivity. It is a fully MASM-compatible
8086 macro assembler that supports
8087. 80286 and 80287 operating code
mnemonics. Features include ability to:
define local symbols in the current pro¬
cedure, assemble files with up to 15,000
symbols, define symbols at assembly
time, obtain listings of error lines only,
with warning messages on questionable
statements. Pasm's comprehensive
documentation includes detailed
descriptions and examples of each pro ¬
cessor instruction. Now includes Pfix-
Lite, a subset of Pfix86p/us.
List: *195 PC Brand: *125
Pmate™
A full screen, single keystroke, fully
customizable text processor/
editor with advanced features includ¬
ing: ability to run m the background, C
and FORTRAN specific macros, auto¬
matic disk buffering, ten individual
auxiliary buffers, menu, mouse, or'
command driven with extensive macro
command language, and horizontal
scrolling. Pmate offers automatic word
wrap, text formatting, global or local
setting of margins, tab stops, indents,
and a unique last-in. first-out "garbage
stack" that saves deleted items for
recovery.
List: $195 PC Brand: *115
Pre-C™
N ow twice as fast! Similar to the Unix
LINT for C, but with additional
functionality. It crosschecks multiple
source files and libraries at once,
reporting incorrect, obsolete, and non¬
portable C usages that no compiler
would catch. Pre-C immediately uncov¬
ers errors in interfaces between pro¬
gram modules which are very difficult
to find using only a debugger. Pre-C
accepts full UNIX System III C syntax,
a subset of which is implemented by
most MS-DOS C compilers, as well as
ANSI proposed extensions. External
libraries can be used with or without
source code. Pre-C libraries for the
latest releases of the Mark Williams,
Lattice, Cl, Microsoft, Wizard, and
Aztec "C" compilers are included, and
others can be added by supplying Pre-
C with function names and arguments.
All memory models are supported.
List: *295 PC Brand: *155
Pfinish™
P finish helps to "fine-tune" a soft¬
ware product by identifying ineffi¬
cient or unnecessary sections of code
that need to be rewritten for maximum
performance. It analyzes your program
during execution, producing reports
and histograms that give a snapshot of
which routines were reached, their
callers, how many times each is
executed, how much time is spent in
each, how many instructions are
executed in each, and more. Histo¬
grams and tabular reports, sorted by
address or symbol, may be written in
any page width or height, to a file, the
console, or the printer. Pfinish, unlike
other "profilers", can use symbol table
information to produce much more
meaningful analyses on overlays and
interrupts.
List: *395 PC Brand: *235
Pdisk™
P disk is a complete disk manage¬
ment package that includes ad¬
vanced Backup/Restore, Tree Manage¬
ment and Disk Cache utilites. Menu,
command line or file-driven. Many
options permit backup/restore mclu-
sions/exclusions, whole and partial sub¬
directories, backups by date/time, file
type, and backups of all files or files
changed since last backup. It can also
maintain a log of backups. Supports AT
high-density floppies, PC floppies, and
any storage device accessible through
a device driver. Tree-oriented Direc¬
tory, Delete, Copy, Compare, and
Remove-Directory simplify manage¬
ment of complicated subdirectory struc¬
tures. CACHE significantly speeds up
disk operation on PC/XT/AT by keep¬
ing data in memory instead of disk. In
addition. CACHE is compatible with the
Lotus-Intel-Microsoft (LIM) expanded
memory specification, as well as ex¬
tended memory.
List: *195 PC Brand: *125
Pmaker™
S imilar to the Unix MAKE utility,
Pmaker keeps track of which
modules in a program are changed,
and recompiles, reassembles, and
relinks those modules to produce a
finished product—all with a single com¬
mand. An essential tool for managing
large, complicated, or distributed pro¬
gramming projects, Pmaker is easier to
use than similar products, which re¬
quire you to create lists of all your input
files. Pmaker includes a utility that auto¬
matically creates and edits such lists
based on answers to a few simple
questions. Pmaker works with any com¬
piled language, linker, or other tool you
use.
List: *125 PC Brand. *85
Pfix™ BBplus
P ix86 plus is an easy to use. menu
driven, multi-windowed symbolic
debugger that works with any IBM or
Microsoft compiled language.
Pfix86 plus accesses the full symbol
table provided by MS Link or
Plink86 plus, and automatically handles
Plink86p/us-overlaid or resident pro¬
grams. Source code, assembly lan¬
guage translations, stack, data areas,
and breakpoints are displayed simul¬
taneously. Features include: In-line
assembler for temporary patches,
temporary and permanent breakpoint
settings, full speed or trace modes,
user-assignable variables, dual-monitor
support, up to 100-step traceback, .
debug log to disk or printer, synchron¬
ized source file display, breakpoints in
source code, disassembly to disk, con¬
figurable menus, multiple code and
data windows, and keystroke macros.
List: *395 PC Brand: *235
PforCe™
P forCe is a pre-coded optimized
object-oriented toolkit of over 400
routines for C programmers. It includes
data bases with B-trees, windows,
interrupt-driven communications, string
handling, menus, all of the basic DOS
interfaces, and a complete set of low-
level functions to interface directly to
the hardware. PforCe comes complete
with indexed reference manual, on line
resident help, and quick reference
card. It supports all memory models of
the following C compilers: Lattice,
Aztec, Microsoft, CI-86, and Wizard.
PforCe includes full source code and
there are no royalties on generated ap¬
plications using the libraries. A
demonstration diskette is also available.
List: *395 PC Brand: * 235
Pfantasy Pac
A super value pac of Phoenix good¬
ies. Includes Pfix86 plus, Pmate,
Ptel, Plink86p7us, Pmaker and Pfinish.
List: $1295 PC Brand: $875
For Orders, Literature, or Catalogs, Call Us at...
800 PC -BRAND
That's (800) 722-7263. In NY State call (212) 242-3600
PC Brand, 150 5th Ave., New York, N.Y. 10011-4311
Ttelex: 667962 (SOFT COMM NYK)
© 1986 PC BRAND Prices, terms, and specifications subject to change without notice.
PC BRAND: GAREFUUY CHOSEN
PROGRAMMER TOOLS
BRIEF Is Anything But.
A Whopper of an Editor
W ith a name that belies its thorough¬
ness, Brief™ has every feature
you’ve ever contemplated for your editor-
in-chief. Text, from keyboard or files, is
housed in multiple buffers, and scrolled
through one or morp windows you open,
close, resize. A text buffer may be called to
different windows to view two areas at
once. A change in one changes both. Text
blocks may be marked for printing, writing
to files, movement to scrap buffers for cut
and paste into other buffers, or deletion,
with as many "undo" levels as you want.
Brief has text search abilities rivaling
"grep", with wildcards for matching,
indifference to intervening characters,
acceptance of character ranges.
If you use Lattice, C86™, or Wizard, and
have 320k, you can compile your C
program without ever leaving Brief. It finds
the lines with errors, and marches you
through the text for repairs.
Parts of Brief were written with its own
Lisp-like macro language which has
structure, 32-character variable names,
conditional execution, loops, and you can
actually read it! Nothing like the
hieroglyphs we've seen elsewhere. Bulletin
board arid public domain disks with
macros. "Simply the best text editor you
can buy”, Dvorak Infoworld. (Needs 192k.)
Ask for: List: PC Brand:
U0590 *195 Call
HALO GRAPHICS
SYSTEM Multi-Board
Graphics Library
The premier graphics library that got the
ball rolling for PC-based graphics and has
grown so omnipotent that it supports over
25 graphics boards — including IBM's
EGA and Nr. 9 Revolution's hi-res series —
and has a multitude of mouse and printer
drivers. All that in each box. Separate C
versions for Lattice, M'soft, Aztez, CI86.
What does Multi-Halo do? A down to the
last pixel graphics library plus functions to
reset drivers so distributed program can
run on anything. Wonderful value for single
license. Costly royalties though for
redistribution. Specify: S0315 & Language.
List: *300. We: * 219 . With Dr. Halo II, a free¬
standing "paint": List: *440, Us: * 299 .
WINDOWS for C/WINDOWS for DATA
Microsoft Windows™ and TopView™ Compatible
W indows for C™is a library of over 80
functions to add the pizazz and prac¬
ticality, of window partitioning to your
application. Unlimited windows, each
defined in a C structure for easy reference
throughout your program, can be made
either to pop up or permanently overwrite
the screen. Routines will scroll and
highlight lists with arrow keys, will read
and scroll ASCII files vertically and
horizontally in windows, and even write to
memory-loaded files off the screen.
Logical treatment of video, attributes
permits unchanged programs to run on
color or monochrome. Colors of windows
are set individually.
All functions are in separate modules;
only those used are linked. Only buffers
holding on-screen or temporarily
obscured windows occupy RAM; others
released dynamically. Best overall rating
and fastest display in Bill Hunt's 7/85 Tech
Journal review of five windowing products.
Windows for Data comprises all of
Windows for C but takes in data through
the windows as well. At the high level a
single function lets you specify prompt
string, field length, data type, screen
location, picture, target variable, then sets
lesser functions scurrying to get and
process a user’s input. There are utilities to
get system date and time, mess with
strings, create your own masks for fields.
Field options can require entry, prevent
entry, permit insert or overtype, beeping
on invalid or overflow keystrokes, and
attachment of field-specific help messages
and functions you want called to display
messages or validate entries. And you
decide which keys will clear a field, jump
to the next or pnor, quit, etc. Options
diverse enough that a set of "fields" can be
made to behave like a Lotus™ menu.
Specify Compiler: List: PC Brand:
T0100 Windows for C *195 *149
T0150 Windows for Data *295 *259
.fcKGV^k'
SfSSgSiSBg
even try ou p begins with E,
i selves if produ a 9 °°^ ven jfitmeans
T. or L through " * , some
SSMkSSBFSS
^p fance XS^ h L n9 T
MICROSOFT C 4.0
A Great C Battle Rages and You’re Winning
A
s the dreadnaughts pound each
other with ever heavier ordnance,
today’s programmers reap the spoils of this
war. Bundling a source debugger and a
"make", and sporting a "huge" memory
model permitting single data objects
larger than 64k, the Microsoft C compiler
has jumped a full version number to 4.0.
But what's really impressive are the bench¬
marks reported in Dr. Dobb’s (8/86)
encyclopaedic survey of 17 C compilers.
Microsoft’s and IBM’s C (licensed from
Microsoft) run away with the contest
winning 11 of 27 benchmarks.
The CodeView™ debugger, free for a
limited time, uses windows to show every¬
thing on one screen: source alongside
disassembled object, variables, stack and
registers. Drop down windows—use a mouse
if you like—obviate learning of commands.
"A source-level debugger that puts the rest
CTREE
B-Tree File Manager, Source Code, No Royalties!
c
-tree is sturdy code that has
weathered many seasons of pro¬
longed and widespread use. It comes in C
source, so you can modify it to fit a special
case. No royalties provided you bind it into
your binary application.
C-tree's design splits nodes to allow any
number of users to access an index file
simultaneously even when updates are in
progress. So multi-user configurations and
adaptation to networks are possible.
Record-locking routines are provided for
dBC Lattice Library Maintains dBASE
Compatible Files With the Power and Speed of C
d BC™ links C to dBASE. It creates and
mainta..is files and their indexes which
exactly replicate dBASE file design. So
dBASE can read and update them. And
the reverse. dBC can use any files created
by dBASE. Now C and dBASE can operate
on the same data bases interchangeably.
That opens up the widespread culture of
dBASE installations to exploitation by C
programmers. Tap that market, avoid the
resident dBASE language, and gain the
advantages of C with this single product.
dBC's functions parallel all dBASE's file
handling commands, many decomposed
to give closer control. Each backed by
demo source files on disk.
Use dBC for custom work for clients, or
on its own. It’s a complete ISAM file
manager for C whether or not dBASE will
be used in tandem, supports all four
memory models, and can have sixteen
index and data files open. Big discount to
buyers of both dBASE II and III versions.
Specify Lattice, Microsoft 3.x, or DeSmet.
DOS 3.1/3.2, UNIX and XENIX.
Thanks to source code which does not
deviate from the K&R standard, C-tree can
travel. Tests in many environments prove
that C-tree gives your application a ticket
to anywhere.
C-tree permits any number of keys for a
data file, supports duplicate keys,
alphanumeric or numeric, supports files of
variable record length; multiple keys in
one index file, and keys of variable length.
Both high level ISAM routines which handle
details with minimum coding, and decom¬
posed step-by-step functions you can access
directly. It's comprehensive.
Ask for: List: PC Brand:
F0660 *395 *329
to shame” (Dobb's),
Microsoft C now has five memory models
for code and data, plus non-library support
for another thirteen, and boasts alternate
math packages for speed versus accuracy,
with or without 8087/80287 chips. A big
plus in multi-language settings: call from
this C any routine written in later versions
of M'soft Pascal, FORTRAN, or Macro
Assembler. Object code of all four may be
intermixed come link time or commingled
into libraries.
Both linker and library manager are part
of the package, as is the "make", a UNIX™
name for a smart batch program which
knows to expend minimum effort to rebuild
any size of project by compiling and
assembling only elements affected by new
or changed modules.
It is reportedly used by Lotus, Ashton¬
Tate and, fittingly, Microsoft itself to develop
■ Windows. Dobb’s calls it "the best MS-DOS
C development environment value today
[for] virtually any kind of program
conceivable." 320k suggested.
Ask for: List: PC Brand:
G0500 *450 *295
CURSES Unix Style Screen
Management
Curses from Lattice™ manages the screen
of the PC like Unix™ curses. Library of 84
functions and macros parallels Unix with
matching parameter lists. So Unix pro¬
grams are at home on the PC, and vice
versa. Keeps any number of screens in
memory, supports color, vast function set to
get characters, wrap lines, scroll, blank
lines, highlight, etc. Like Unix refreshes
screen only on your command. Ask for:
L0850. List: *125. Here: *99. With Source:
L0860, *250/*199
PANEL Feature-Laden Screen Design Tool
w
Versions:
List:
PC Brand:
LOOII
For dBASE II
*250
*195
LCCII With Source
*500
*390
L0III
For dBASE III
*250
*195
LCIII
With Source
*500
*390
' riting your own screenware can
blow completion dates and profits.
Panel™ works with you interactively to
set up foolproof screen displays and
data entry forms rapidly. Output is C
source code.
Not just single plane: layer your screen
designs with up to ten overlapping
images: Background pop-up lists, help
boxes, and alternate input fields.
Panel builds in a user interface for
keystroke movement within and between
fields, supplies validation routines for
checking user field entries. Diverse at¬
tributes may be selected for any field —
size, data type, color, conversion of input
to upper case; clearance of existing data
when new entry is started; masks for
standard formats (eg, dates); phrases
which fill in when their first letter is
typed; multiple-choice lists from which
to choose by cursoring a highlighted bar.
Fields may be multi-lined and scrolled if
larger than the screen space allotted
them. Specify: S0400 & Compiler. List:
*295 Us *229
TionaltiBSwWfe 'Hfl/FO? CM cataiw
For Orders, Literature, or Catalogs, Call Us at...
800 PC-BRAND
That's (800) 722-7263. In NY State call (212) 242-3600
PC Brand, 150 5th Ave„ New York, N.Y. 10011-4311
Ttelex: 667962 (SOFT COMM NYK)
© 1986 PC BRAND
Prices, terms, and specifications subject to change without notice.
TODAY’S TOP QUALITY AIDS TO
PROGRAMMING PRODUCTIVITY
GREENLEAF Bountiful DAN BRICKLIN’S DEMO PROGRAM
FUNCTIONS Harvest Storyboard Your Program
BASTOC OPTIMIZES'.
Translates BASIC Into C
C source, assembler source, and binary
libraries of 225 functions for many com¬
pilers. Emphasizes tight functional group¬
ings to minimize loading code which your
application may never use Manual helps
select functions, bulletin board, too.
A sampling: DOS extensions for file and
directory manipulation; Screen: to select
mode, page, monochrome or color, palette;
cursor shape, positioning; clearing and
scrolling; pixel get and put; read light pen.
Strings: Center, justify, etc.; efficient list
operations which add, delete, sort string
pointers for top speed. Other: graphics
character primitives, keyboard status, func¬
tion key assignment, time/date, read
registers and memory size, peek and
poke. Mature best-seller. Specify: S0770 &
Compiler. List: *185, Here: *139
GREENLEAF HeUo World
COMMUNICATIONS
Want your application to communicate
with other users or remote date bases by
asynchronous communications built right
into your C programs! Even if you don’t need
it now, that's a skill to have at the ready!
120 functions and demo programs in
both C and assembler source code set up
separate transmit and receive ring buffers
for up to 16 simultaneous channels. In¬
terrupt driven so you can halt an incoming
record, display it, file it, let the user edit it,
then continue. Goodbye separate com¬
munications software.
Supports up to 9600 baud, ASCII or
binary, any panty or word length, 8250
UARTs, Xon/Xoff and Xmodem,
WideTrack receive. Specify: S0750 &
Compiler. List:*185, Us: *139
INTERACTIVE-C
Compiler-Compatible
Interpreter, Editor,
Debugger
n arlier C interpreters were miracu-
Jfci lous compromises: Interactive-C
shows how far C interpreters have
come. More than an interpreter,
Interactive-C is a fully-integrated
development environment: a complete
K&R interpreter bound tightly to its
own editor and debugger.
Slice through programming projects
like a hot knife through butter. Exten¬
sive error-checking insures immediate
detection of program misbehavior.
State of the art debugging tools
include breakpoints, watchvalues, sev¬
eral stepping options and interactive
viewing and modification of variables.
An Interactive-C exclusive lets you
interrupt to edit and "continue" from
where you left off. Eliminates plodding
replays of already debugged code—
the ball and chain of other interpreters.
Operate Interactive-C using adjust¬
able edit, command, and status win¬
dows. Toggle a second screen show¬
ing only your program’s output—
never any crowded intermixing. Or,
boost productivity with twin CRTs.
Load object code of Junctions you
have already compiled. Or of com¬
mercial libraries. Interactive-C has
immediate mode, syntax checking
both as you type and run, and cursor
positioning precisely pointing at an
error, not possible with incremental or
pseudo-compilers which leave source
code behind.
100% compiler compatible—right
down to header files and library calls.
Port programs between Interactive-C
and your compiler with no modifications
whatever — not even tricky areas of
dynamic memory allocation and I/O.
Specity: List: PC Brand:
E950 & Compiler *249 *219
T he Legendary One has created
Metaphor Two when the rest of us are
still on Zero. Dan’s first was the original
electronic spreadsheet (VisiCalc™). This
one is for programmers.
Words don't express program ideas
because programs are screens! Dan's
Demo creates slide shows. Create a
screen — a snapshot of your planned pro¬
duct as it runs. Anything goes: words,
borders, box rules, inverse and underlining
of monochrome, fore- and background color.
Copy this "slide" to an empty screen.
Change it a little, to show the next instant of
run-time Do it again. Presto, a whole slide
show of your program in action.
All 250 characters and attributes are
available from scrollable lists which pop to
the screen. All commands are layered in
Lotus-style pop-up menus. Frequent
choices mapped to function keys as well.
80x25 character mode, not bit-mapped.
Screen areas can be blocked for cut and
paste or filled with color or characters,
even blink. Slides can overlay on others,
can be shuffled, deleted. Slides can pro¬
ceed at time intervals or branch anywhere
in the slide sequence depending on user
keyhits.
Invaluable to prototype the program you
are about to write, to position the labels,
choose the color decor, smoothe out the
keystroke interface. Or load the "capture"
utility and snapshot the screens of any run¬
ning program for an instant slide show.
Each copy entitles you to redistribute fifty
of the slide projector program that runs
demos. Plain manual, no binder keeps
price of big product small. “Might...
become the essential tool in.. .user inter¬
face prototyping," Tech Journal. Ask for:
N0100. List: *75 US: *69
F or a trifling price, BASTOC™ moves
truckloads of BASIC code over to C.
It's a translator which takes in Microsoft
Extended BASIC and emits pure K&R C
for Lattice 3.0. It will optionally convert
your program into a single monolithic C
function or decompose it into separate
functions, one for each GOSUB label.
Version 2's optimization dramatically
reduces execution time. Converts to in¬
tegers those variables in BASIC programs
which do not need floating point. Where
BASIC uses full assignment statements to
increment counters, BASTOC converts to
C's compact form. Strings dynamically
allocated ndding your application of BASIC’s
catatonic halts for garbage collection.
Creates'Structure of even convoluted
BASIC code. Huge worksaver.
Ask for: List: PC Brand:
S0375 ‘495 *399
Shopping List for the Power Workbench
ASSEMBLERS & DEBUGGERS LIST US
Advanced Trace-86 Morgan, ASM Interpreter ... 175 119
Codesmith-86 Dubugger by Visual Age . 145 99
CSD Debugger C source level by Mark Williams 75 55
C-Sprite Debugger by Lattice, source level . 175 139
Microsoft Macro Assembler with Utilities . 150 109
PASM86 by Phoenix, Macro Assembler . 195 125
Periscope I Debugger Data Base Decisions .... 295 235
Periscope II Data Base Decisions . 129 99
Periscope II -X software only . 115 74
Pfix86 Plus by Phoenix, Symbolic Debugger ... 395 235
BASIC LANGUAGE
BetterB ASIC Summit Soft ware . 195 165
BetterBASIC Utilities 8087 Math Support . 99 85
Btrieve Interface . 99 85
Run-Time Module . 250 225
Microsoft BASIC Interpreter for XENIX . 350 295
Microsoft QuickBASIC Compiler full BASICA .. 99 79
Professional BASIC by Morgan ... 99 69
True BASIC True BASIC Inc . 150 99
Run Time Module . 150 99
True BASIC Libraries Btrieve, Asyn, Sort, etc .... Var Call
C COMPILERS
C-86 Compiler Computer Innovations . 395 289
Lattice C Compiler from Lattice . 500 299
Let’s C Compiler by Mark Williams . 75 55
with CSD Source Level Debugger . 150 105
MWC-86: Mark Williams C Development. 495 369
Microsoft C Compiler 4.0 . 450 295
C INTERPRETERS
C-Terp by Gimpel Software . 300 249
Instant C by Rational Systems . 500 395
Interactive-C by IMP ACC with debugging . 249 219
RUN/C Professional from Lifeboat . 250 185
RUNIC without Loadable Libraries . 120 109
TEXT EDITORS
Brief from Solution Systems . 195 Call
Edix by Emerging Tech...Multi-screen . 195 159
Epsilon by Lugaru Software, like EMACS . 195 149
FirsTime by Spruce Technology, C syntax . 295 229
Kedit by Mansfield, similar to Xedit . 125 99
LSE, the Lattice Screen Editor Multi Window ... 125 100
Pmate by Phoenix, with Macros . 195 115
Text Management Utilities Grep, splat, diff, etc. 120 100
Vedit by Compuview . 150 99
Vedit Plus by Compuview . 185 129
FILE MANAGERS
Btrieve by Softcraft, no royalties . 250 195
Btrieve Network by Softcraft . 595 465
C-Tree by FairCom - no royalties, source . 395 329
R-Tr ee by FairCom-Report Generator . 295 245
C-Tree & R-Tree Combo by FairCom . 650 541
dBC dBASE file manager from Lattice . 250 195
with source ... 500 390
dbVista single user QBMS by Raima . 195 139
with source . 495 399
dbVista mufti-user DBMS .. 495 399
with source . 990 815
Opt-Tech Sort Can sort Btrieve files . 149 105
SCREEN DESIGN
Curses by Lattice, UNIX screen designer . 125 99
with Source . 250 199
Greenleaf Data Windows. New . 225 169
with source . 395 297
source purchased later . 225 169
On-Line Help from Opt-Tech Data . 149 105
Panel by Roundhill, no royalties . 295 229
View Manager for C by Blaise . 275 189
Vitamin C by Creative Programming . 150 129
Windows for C Vermont Creative Software .... 195 149
Windows for Data includes Windows forC .... 295 259
ZView Data Management Consultants . 245 175
GRAPHICS
Essential Graphics by Essential, no royalties 250 210
GSS Graphics Development Toolkit. 495 375
GSS Kernel System by Graphic Software . 495 375
GSS Kernel System for IBM RT . 795 645
GSS Metafile Interpreter. 295 235
GSS Plotting System. 495 375
Halo by Media Cybernetics . 300 219
with Dr. Halo II. 440 299
Halo for Microsoft includes all fonts . 595 434
COMMUNICATIONS
Asynch Manager by Blaise, for C or Pascal .... 175 125
Greenleaf Communications by Greenleaf . 185 139
PTel by Phoenix, Binary File Communicator.... 195 115
Software Horizons Pack 3. 149 119
UTILITY LIBRARIES
Blaise C Tools Plus. 175 125
Blaise C Tools. 125 89
Blaise C Tools 2 . 100 69
C Food Smorgasbord by Lattice . 150 109
C Utility Library by Essential, 300 functions _ 185 139
Greenleaf Functions by Greenleaf Software ... 185 139
PforCe by Phoenix, vast library .: . 395 235
Software Horizons Packages . Var Call
TopView Tool Basket by Lattice, source avail... 250 199
DEVELOPMENT TOOLS
Code Sifter by David Smith Software, Profiler 119 89
C-Worthy by Custom Design Software . 295 269
C-Worthy for Network Menus, help, errors . 495 449
Dan Bricklin’s Demo Program Prototyper . 75 69
LMK from Lattice by Lattice, “make” like UNIX . 195 149
Microsoft Window Development Toolkit. 500 365
PC-Lint by Gimpel Software, after UNIX’s “lint ”. 139 125
PFinish by Phoenix, EXE performance analyzer. 395 235
Plink86 Plus Utilizes memory for overlays . 495 325
Pmaker by Phoenix, like UNIX “make” . 125 85
Pre-C by Phoenix, UNIX "lint”-alike . 295 155
Pfantasy Pac six Phoenix products . 1295 875
OTHER TOOLS
BASTOC by JMl, convert BASIC to C . 495 399
BASIC-C BASIC’s functions added to C . 175 139
The HAMMER by OES Systems . 195 139
Report Option by Softcraft, Btrieve Report Gen.. 145 128
Xtrieve by Softcraft, Query Utility for Btrieve ... 245 220
FORTRAN COMPILERS & UTILITIES
ACS Time Series by Alpha Computer Sen/ice... 495 405
Forlib- Plus by Alpha Computer Service . 70 45
Microsoft FORTRAN Links with Microsoft C ... 350 219
Microsoft FORTRAN for XENIX . 695 546
RM/FORTRAN by Ryan McFarland . 595 Call
Scientific Subroutine Package by Alpha . 295 239
The Statistician by Alpha Computer . 295 239
Strings & Things by Alpha Computer . 70 45
OTHER LANGUAGES & UTILITIES
Microsoft COBOL Compiler,. 700 499
Microsoft COBOL Compiler for XENIX . 995 795
Microsoft COBOL Tools with Source Debugger . 350 259
Microsoft COBOL Tools for XENIX . 450 333
Microsoft Lisp New Common Lisp . 250 189
Microsoft MuMath includes MuSimp . 300 199
Microsoft Pascal Compiler Links with M’soft C. 300 199
Microsoft Pascal Compiler for XENIX . 695 546
PDisk Phoenix's new disk manager . 195 125
RM/COBOL by Ryan-McFarland . 950 Call
RM/COBOL 8XANSI85 COBOL . 1250 Call
Source Print Aldebaran’s diagrammer . 139 109
PRICED TO SAVE YOU MONEY, up
SHIPPED EAST ANYWHERE,
FYAN-McFARLAND FORTRAN
A Mighty Fortress Is Their FORTRAN
LATTICE C COMPILER
Major Upgrades to the Best Selling C Compiler
P icking over features of rival products
is not necessary if FORTRAN is your
need, still the citadel of scientific and
engineering work. Ryan-McFarland has
left the competition battering at the gates.
RM/FORTRAN™ is a complete im¬
plementation of FORTRAN-77 (ANSI
X3.9-1978), the only PC FORTRAN certified
by the General Services Administration at
the highest test level. The reason: it's a
big mainframe compiler moved to PCs,
with the bonus that mainframe and mini
applications can wander between
RUN/C PRO
C Interpreter Links
Binary Libraries
R un/C comes in an apprentice and
pro version. The professional model
dynamically loads and unloads multiple
binary function libraries like C-Food
Smorgasbord™ and Halo Graphics™ —
potentially any library compiled with
Lattice’s large model. Inside this inter¬
preter your C program can reach for func¬
tions in the best of commercial libraries.
This C interpreter behaves like PC BASIC
meets WordStar* . Use fullscreen editing
to create a program. RUN it. If it stumbles,
LIST it, EDIT it, RUN it again, fix it again.
Use familiar commands like LOAD, MERGE,
SAVE, FILES, even TRON and TRACE.
Ideal for program development. Put up
code at high speed, try out things devil-
may care, let RUN/C find your malaprops.
Blast away until tight little code segments
are undyingly faithful.
Manual shows how to develop the inter¬
face to a commercial library, using the Lat¬
tice compiler (a must!). Link your own func¬
tion archive the same way. (320k minimum;
512k recommended to fit libraries.)
Ask for: S0950 List: *250 PCB: *185
ZVIEW
Screen Design Aid
A complete package for screen
design with full windows manage¬
ment as a bonus! Easy creation of
screens with complex validation, such
as range checking or required/option¬
al data. Powerful Screen Paint utility
for creating or editing applications
screens. Built in security levels, set at
run-time, control read or read /write
access by field or screen. Automatic
help screen processing for run-time
aid per field or screen. Applications
regain control during field tabbing,
allowing run-time on-screen transaction
processing or flow control. Run-time
functions include Screen Read and
Write with automatic transparent data
conversion from screen image to data
storage, Field Editing, Help Screen
Processing, even a capability to
change any field characteristic at run¬
time, plus Window Push Pop and Scroll.
Versions for Lattice, Microsoft and
Aztec C. Automatic free updates to
registered users. No run-time royalties.
List *245 PC Brand *175
environments.
Now, on your PC, you can develop large
applications, with programs up to 640k
(bigger using overlays), arrays over 64k,
and using a long list of VS, VAX and
FORTRAN-66 extensions you may have
grown fond of — long symbolic names, "in¬
clude", IRT bit functions — because R-M
has left out nothing.
But what really sets RM/FORTRAN
apart is optimization. The compiler
reduces the number of instructions to the
minimum which will actually execute, and
even takes advantage of each processor's
features to deliver lightning-fast object
code. It runs 30%-40°/o faster than Microsoft
3.2, and could make your mainframe not
worth the trouble.
Comes with an interactive symbolic
debugger like that accompanying IBM VS
FORTRAN, Plink86 subset, has a cross
reference compile option, supports
assembler and C subroutine calls, IEEE
floating point, 8087 and 80287 chips.
"Compiler’s documentation, ease of us-
speed of execution, and debugger
facilities place it first for recommendation
said the Tech Journal (10/85).
R-M has been writing FORTRAN com¬
pilers for IBM, DEC, etc. for 20 years.
There is no greater expert.
Ask for: List: PC Brand:
10300 *595 Call
L attice now embraces key UNIX™
enhancements which have entered
the language since K&R: void functions
returning no value, enumerated data types
to assign stepped values to variables, data
passing between structures by assignment.
The greatly expanded libraries (325
functions!) enable the file sharing and
record locking provisions of DOS 3.1, pro¬
vide a full complement of transcendentals,
and a host of utilities to mimic the UNIX
and XENIX™ environments.
Lattice 3.0 defaults to the ANSI proposed
standard when you need strict adherence,
but command line options restore leniency.
And it adopts ANSI checking of external
function arguments by data type to kill bug
swarms when modules join up at link time.
SSKESsSSg
card numb®'P q,. Refunds to ,
address of card u i Ba nk, 12
1§S^
GSS GRAPHICS SYSTEM _ „ twd mw
Leave the Device Driving to GSS ANS ' c prices ci
G SS™ has reconfigured two compo¬
nents of its comprehensive graphics
tools to conform with the ANSI Computer
Graphics Interface (CGI) standard.
At the heart of the system is the Develop¬
ment Toolkit which contains all language
interfaces and device drivers for key¬
boards, mice, joysticks, tablets, printers,
plotters, cameras, and more. Drivers house
management of vector graphics (plotters)
and bitmaps used by raster input devices
(scanners) to insulate the application pro¬
gram from concern for device idiosyncracy.
No one else has implemented CGI that
way. It means your programming remains
generic: just switch drivers and the same
program will drive a different device.
GSS Kernel™ conforms to level 2b of
ANSI's Graphical Kernel System (GKS) and
contains all its needed drivers and
language bindings. Kernel has macro level
tools to draw and color an object, store the
sequential instructions, and recreate the
object on its own, as well as segment it,
transform it, etc. So powerful, a single com¬
mand may represent several score lower
level statements.
Plotting has the equivalent GKS tools for
graph and chart generation and their cap¬
tioning: hand it apples and oranges, say
"pie", and it bakes the numbers into a
digestible display for screen or plotters.
Kernel and Plotting have tools to convert
images they create to ANSI Computer
Graphics Metafiles (CGMs), a tokenized
standard for storing every form of graphic
image as data. The Metafile Interpreter
PRICES CUT!
reads the contents of a CGM and inter¬
prets it with full CGI capability for re¬
creation on various devices.
Quality software 9 IBM thinks so. They sell
the GSS series under their own label.
Unit royalties and annual fees have been
instituted for redistribution. Needs 256k.
Ask for:
GS010 CGI Dvlpmt Toolkit
GS020 Kernel System
GS025 Kernel for IBM RT
GS030 Plotting System
Lattice now delivers smaller .EXE files,
boasts very fast link times and a more effi¬
cient aliasing algorithm. New options
generate code to use 80186 and 80286
features; 8087 of course sensed and util¬
ized. Lattice has enjoyed pre-eminence so
long that developers have created far
more snap-on tools for Lattice C than any
other compiler. William Hunt’s PC Tech
Journal review of 12 compilers awarded
Lattice the only "very good" rating for
add-on library availability.
Ask for: List: PC Brand:
S0100 *500 *299
BETTER BASIC
Convert Microsoft BASIC.
Structured, Compilable.
C ombines the familiarity of BASIC with
the best features of C, Pascal, and
Modula 2, yet BetterBASIC is 100% com¬
patible with Microsoft's GW™ BASIC and
IBM BASICA including graphics, sound,
and assembly language calls. So load your
old programs and RUN. SAVE and they are
converted automatically to BetterBASIC!
It’s big: Needs 192k; programs can go to
the PC's full 640k. It's comfy: Behaves like
M'soft BASIC at the interactive level, with a
full-screen editor, direct statement execu¬
tion, and always poised to RUN. It’s fast:
Each statement checked and compiled
once, not every time encountered. Sieve
runs 6 times faster than with M’soft.
C-like structures house file records so
goodbye to FIELD, MKI$, CVD, LSET, etc.
Named "procedures" replace GOSUBs to
linenumbers. Lots more features: built-in
linker for compiled modules; trace; debug¬
ging breakpoints; cross-reference com¬
mand; 32k strings; DOS and BIOS calls and
interrupts; recursion. Run-time module
List:
PC Brand:
stores object code for redistribution.
*495
*375
Ask for::
List:
Us:
*495
*375
S1200 BetterBASIC
*195
*165
*795
*645
S1201 Run-time Module
*250
*225
*495
*375
S1202 8087 Interface
* 99
* 85
*295
*235
S1205 Btrieve Interface
* 99
* 85
BTRIEVE ASK ABOUT XTRIEVE & RTRIEVE
Queen B-tree File Manager Abdicates Royalties
T here’s no longer a tithe to incorporate
Btrieve™ in applications, a welcome
proclamation if royalties would ruin your
profit margins. Btrieve takes complete
charge of all file creation, indexing,
reading, writing, insertion, deletion, space
recapture, forward and backward search¬
ing. It builds function call "commands"
right into the language you use: interfaces
to C, Pascal, BASIC, and COBOL, with sam¬
ple programs in all four, come with each
copy.
Btrieve has mainframe specifications! Its
balanced-tree indexing scheme finds any
key in a million in four or less accesses.
Files may have up to 24 indexes; fixed
record length to 4090 characters; indexes
up to 255 characters; files of 4 billion bytes.
Can even extend a file across two drives —
even two hard disks!
Version 4.x speeds DOS interaction for
large multiply-keyed files; enables
variable length records of virtually any
length; verifies accuracy (optionally) with
read after write, useful in gritty en¬
vironments; offers password and data
encryption.
There's also Xtrieve, for Btrieve file in¬
quiry and data manipulation, and Rtrieve
for report writing. All three in versions for
any network that supports the MS-DOS 3.1
file sharing function.
Ask for: List: PC Brand:
S0650 *250 *195
S0652 Network Version *595 *465
TERMS AND CONDITIONS OF SALE
Licenses: Each price is for a license fo use a prod¬
uct on a single computer and does not constitute
its ownership. We will inquire for you about site
licenses. Except as otherwise indicated or where
follows the Product Code, products may be
used to create programs for distribution without
royalty payments or additional licenses, provided
said programs do not substantially replicate the
products themselves
Compatibility: PC BRAND'S standard products
are designed to operate with the IBM'* PC. XT or AT
under PC-DOS and require no more than 128k of
RAM unless indicated Non IBM machines using
MS-DOS: contact manufacturer about precise dif¬
ferences so we can advise.
Returns: See box page one Defective parts will be
replaced Please call for authorization to return a
product for refund.
Payment: We honor MasterCard. Visa. American
Express (no surcharge), checks in advance, or
funds wired to PC Brand, c/o Chemical Bank. 126
East 86St . New York, Account 034-016058 COD
(U S. only) for cash, money order, certified check
(no fee). NY State, add sales tax Purchase orders
accepted from larger corporations and institutions
at our discretion if you agree to net 30 days plus 2%
a month late penalty thereafter.
Shipping & Handling: U S UPS Surface. 1st
product $6, each add'l $3. UPS 2nd Day Air: 1st
product $10. each add'l $4.50 UPS Next Day Air or
Federal Express 1-2 Day Air: 1st product $18. each
add'l $6 FedEx Next Day 10 AM. 1st product $28.
each add'l $7. International: Charges vary by
destination and carrier. $10 per shipping container
for export forms. Air parcel post at your risk beyond
collected insurable amount
For Orders, Literature, or Catalogs, Call Us at...
800 PC-BRAND
That’s (800) 722-7263. In NY State call (212) 242-3600
PC Brand, 150 5th Ave., New York, N. Y. 10011-4311
Telex: 667962 (SOFT COMM NYK)
© 1986 PC BRAND
Prices, terms, and specifications subject to change without notice.
RONALD FLORENCE
PC TECH JOURNAL
T he rapid proliferation of micro¬
computers has created a PC cul¬
ture that, to a great extent, has
trouble communicating with the older
mainframe/minicomputer culture. Many
mainframes and some minicomputers
have hardware limitations that restrict
asynchronous communications to de
facto six- or seven-bit words and a lim¬
ited set of control characters (line feed,
carriage return, backspace). By contrast,
most PCs make no limitation on the use
of all eight bits of each character. Each
culture has evolved its own data trans¬
mission protocols, and only a few of
these protocols have die capability 7 of
translating between the two.
In the world of PCs, the XMODEM
protocol has become the lingua franca
of machine-to-machine transfers. Al¬
though many businesses use proprietary
transfers such as Microstuf Crosstalk or
Hayes Smartcom, which, by using long
data blocks of 512 bytes, are efficient
and fast, these programs require both
the receiver and sender to be set up for
the same protocol. For bulletin boards,
CompuServe, and direct machine-to-ma-
chine links, XMODEM is the norm. Most
PC communications programs, whether
commercial or public domain, include
it. The sidebar “The XMODEM Process,”
on page 147, briefly explains the proto¬
col. (See also “Screenspeak,” Augie
Hansen, November 1984, p. 151, for a
discussion of Smartcom and XMODEM,
and “High-tech Mimicry,” Augie Hansen,
September 1984, p. 46, for a compar¬
ison of 10 communications packages,
including Crosstalk.)
Among mainframes and minicom¬
puters, however, XMODEM is virtually
unknown, mainly because it uses all
eight bits of each transmitted byte. To
transfer binary data, the larger machines
must use a protocol that includes a
quoting mechanism to send eight-bit
data in seven bits. The quoting mecha¬
nism prefixes a character with a quote
character (# or &) to indicate that the
high-order bit of the following charac¬
ter is set. The extra characters, includ¬
ing the additional quoting characters
(which must be sent to indicate that a
# in the data stream is only a # and
not a quoting character), exact a high
toll in terms of overhead.
Kermit, the protocol developed at
Columbia University to bridge main-
frame-to-microcomputer transfers, is
MARCH 1987
145
ILLUSTRATION • J A IAPINSKI
XMODEM
flexible, versatile, and reliable, with the
capability of translating file-naming con¬
ventions and establishing a packet-ex¬
change handshake between machines.
(See “Kermit,” Augie Hansen, January
1985, p. 110). Kermit includes quoting
mechanisms for machines that cannot
send or receive eight-bit data. The price
of this flexibility, however, is speed: be¬
cause Kermit transfers data in short
packets of approximately 90 characters,
it is somewhat slower than XMODEM.
In any protocol transfer, each packet in¬
cludes die overhead of synchronization
characters, packet numbers, checksums
or CRCs (cyclic redundancy checks),
and the wait for the acknowledgment
from the remote machine. Hence, the
shorter the packets, the greater the
overhead. Kermit is available in some
PC communications programs, but it is
not used extensively.
For many PC users, the most com¬
mon interaction with minicomputers
takes place with systems running UNIX.
Frequently, the only file-transfer proto¬
col available between the machines is
an ASCII dump. A stty command on the
UNIX machine can be used to map the
line endings from the DOS CR-LF com¬
bination to the UNIX NL, or vice versa.
To dump a file onto the UNIX system,
the remote user enters the command
cat > filename on the UNIX system.
Anything sent from the remote terminal
up to an EOF (Ctrl-D for most UNIX
systems) is put into filename on the
UNIX system. To dump an ASCII file
from the UNIX machine to a PC logged
on as a terminal, the user opens the
capture file on the local machine and
enters cat filename on the UNIX ma¬
chine. These simple procedures can be
enhanced using UNIX commands such
as mesg n, which prevents other users
from writing to the terminal screen dur¬
ing the transfer, or echo, which signals
the end of the transfer.
These ASCII dumps are efficient,
but they offer no error-checking (an in¬
creasingly important feature as long-dis¬
tance carriers compete by cutting line
quality in conjunction with costs). Even
if the connection is noise-free, a seven-
bit ASCII dump cannot transfer binary
files. For those who use UNIX machines
with cross-compilers as software devel¬
opment systems for DOS, neither object
files nor executable programs can be
transferred between the UNIX system
and a DOS machine using these ASCII
dump procedures. For example, a de¬
veloper using his DOS machine at
home with a modem as a terminal on a
remote UNIX machine, could not down¬
load the executable DOS version of his
program from the UNIX machine with¬
out an eight-bit protocol.
In addition, UNIX-based machines
are limited in their ability to call to
other machines by the absence of the
XMODEM protocol. The typical univer¬
sity or engineering super microcom¬
puter or minicomputer, running some
version of UNIX, communicates with
other UNIX machines using cu (call up)
for interactive communications, or uucp
(UNIX-to-UNIX communications pro¬
gram) for unattended file transfers.
Both programs rely on a streamlined
ASCII dump to transfer text or source
files. For binary transfers, most UNIX
systems use a version of Kermit. These
programs work well for communica¬
tions between UNIX systems, but cu
and C-Kermit (another such program)
lack support for the file-transfer proto¬
cols used by most DOS bulletin boards
and some large database systems.
UNIX systems have no problem
with eight-bit data, as long as the stty or
ioctl( ) functions that condition the line
are set for eight-bit characters. Thus,
XMODEM should be adaptable for use
on a UNIX system, so that a caller with
IW systems can handle
eight-bit data as long as the
stty or ioctl() functions that
condition the line are set
for eight-bit characters.
a PC can log on using a DOS terminal
program, such as Crosstalk or Head¬
lands’ pc-talk, and make error-checked
file transfers to and from the UNIX sys¬
tem using XMODEM. (See “pc-talk:
Communications Control,” Will Fastie,
September/October 1983, p. 162.) For
UNIX users with sourceTicenses, the
UNIX communications program also
can be modified to include XMODEM.
The code in listing 1 (XMODEM.C)
is a module, written in C, that will han¬
dle the XMODEM transmission or re¬
ceipt of files to and from a UNIX sys¬
tem, using either checksum or CRC er¬
ror checking. (See “CRC Calculation,”
W. David Schwaderer, April 1985,
p. 118.) The code includes an option for
the transfer of text files between a DOS
machine and a UNIX machine; if the
text option is invoked, the transfers will
make the conversions between DOS
CR-LF line-endings and UNIX NLs.
XR AND XT
Compiled with the code in listing 2 .
(XR.C), the xmodem module produces
a stand-alone remote XMODEM pro¬
gram for UNIX systems. The compiled
program xr is linked with another file
called xt. (A file link in UNIX creates
two separate names for the same file.)
XR.C parses to determine which name
has been used to invoke the program:
xr is invoked to receive files, xt to send
files. The executable file(s) should be
in a directory on the UNIX system that
is on the default path of most users,
such as /usr/bin or /usr/lbin. The invo¬
cation format for the two is the same
except for the file name, either:
xr [—ct] [-d errfile] filename
or
xt [-ct] [-d errfile] filename
The -c option provides CRC error
checking instead of the default check¬
sum; -t provides text file line-end con¬
versions; and -d provides verbose de¬
bugging information in a user-specified
file on the UNIX system.
To send a file to the UNIX system
from the PC using XMODEM, the user
would enter the command
xr [options] filename
on the UNIX system. The xr program
checks to see if it can write the file on
the UNIX system or announces that it
cannot (if, for example, the user has
given a path that has no write permis¬
sion). If the file already exists, instead
of overwriting the file, xr will create
filename “. This is a crude sort of colli¬
sion-protection scheme, which fails with
longer (14-character) file names.
The user then begins the XMODEM
file transmission on the PC terminal
program. To cancel the transfer, the PC
sends a Ctrl-X, (the CAN character used
by XMODEM), which is sent automati¬
cally by most XMODEM programs when
a transfer is aborted.
To send a file from the UNIX sys¬
tem to the PC, the user would enter
xt [options] filename
on the UNIX system. If the file exists,
and can be read, xt announces that it is
ready to begin the transfer and give the
size in blocks of 128 bytes. Then, the
user would invoke the XMODEM re¬
ceive procedure on the PC terminal
program. The xt program automatically
adjusts to the error-checking method
specified by the receiver program.
Again, Ctrl-X aborts the transfer.
If the -t option is used to send text
files or source code between a DOS
146
PC TECH JOURNAL
THE XMODEM PROCESS
The XMODEM protocol is prevalent
as a method of file transfer in the PC
environment. It was originally devel¬
oped by Ward Christensen for use
on machines that were running CP/M
operating systems. The protocol’s
ability to send binary files with some
error checking over less-than-perfect
telephone lines is the reason for its
widespread adoption.
An XMODEM protocol file trans¬
fer between two computers is shown
schematically in figure 1. The vertical
bars show relative time proceeding
downward. Various “messages” are
depicted as arrows pointing in the
direction of the receiver of the mes¬
sage. For the purposes of this discus¬
sion, it is assumed that the computer
on the left is sending a file to the
computer on the right.
The transfer is initiated when
the receiving computer sends an
NAK (negative acknowledgment)
message to the sending computer,
indicating that it is ready to synch¬
ronize and receive a file. It will send
NAK characters at 10-second intervals
until the sender begins transmitting
the file or until nine NAKs have
been sent, indicating that the sender
is not responding.
Assuming that the sender synch¬
ronizes, the first block is transmitted.
A block, depicted in figure 2, con¬
sists of an SOH (start of header)
character, a block number (sequen¬
tial up to 254) expressed as an ASCII
character followed by the character
equivalent of the one’s complement
of the block number, then 128 bytes
of data, padded if necessary to fill
the block, and a checksum value de¬
rived from the transmitted data.
The checksum is calculated by
adding the ASCII values of the char¬
acters in the 128-byte block, then
ANDing the results with 255. If the
receiver calculates the same check¬
sum value for the received data, an
ACK (acknowledgment) is returned
to the sender, indicating success.
Failure is indicated by an NAK,
which would result in a retransmis¬
sion of the block until it is received
correctly or until nine retries have
been made. When the sender has no
more data to send to the receiver, it
transmits an EOT (end of transmis¬
sion) character and awaits an ACK,
which terminates the transfer.
—Augie Hansen
FIGURE I: A File Transfer via XMODEM
SENDING RECEIVING
COMPUTER COMPUTER
The receiving computer (right) will send NAK (negative acknowledgment)
characters at 10-second intervals until the sender begins transmitting the file or
until nine NAKs have been sent, thus indicating the sender is not responding.
FIGURE 2: XMODEM Block Description
/- - --- 71
SOH
#
#
128 BYTES OF DATA
CHECKSUM
Each block of data that is to be transmitted must contain a full 128 bytes. If the
block is shorter than 128 bytes, it must be padded to the full length.
MARCH 1987
147
XMODEM
system and a UNIX system, the file
lengths on the UNIX machine will be
shorter than the file lengths on the
DOS machine. This is a result of the
line-end conversions that take place.
USING XMODEM WITH CU
For users with UNIX (or XENIX) source
licenses, the xmodem module can be
compiled with a modified version of cu
to provide XMODEM in the principal
UNIX (or XENIX) communications pro¬
gram. The modified cu can be used to
call a bulletin board or another remote
computer that uses XMODEM for error-
checked file transfers to and from the
UNIX (or XENIX) system.
The cu program, like many such
programs in UNIX, uses fork( ) to estab¬
lish two parallel processes, one to re¬
ceive incoming data on the open com¬
munications line, the other to examine
everything typed at the keyboard, pars¬
ing and interpreting commands, and
sending the other characters out over
the open line. To use xmodem, cu or
another UNIX communications program
requires the following code:
• A command-parsing mechanism that
recognizes the options (CRC instead
of the default checksum error-check¬
ing, NL to CR-LF line-end conversion
for text files, debugging mode).
• Code to kill the receive fork of the
communications program and recon¬
dition the open communications line
to no parity, no stripping of characters
to seven bits, no XON/XOFF protocol,
and eight-bit characters.
• A new fork to invoke xget( ) or
xput( ) with the file name and the
appropriate options.
• A longjmp( ) to restart the receive
process of the terminal program (and
recondition the communications line
back to its original settings) when the
file transfer is complete.
The options are passed by setting
the appropriate bits in the integer pa¬
rameter options. The file pointer to the
open file is passed in the parameter fp.
The external file rlfd is the open com¬
munications line in cu.
The -DCU compile option for
XMODEM.C sets up the SIGINT signal
(the DEL key) to cancel file transfers,
and includes code to place a period (. )
on the screen for each successful packet
transfer, or a percentage symbol ( % )
for each unsuccessful transmission. If
the debug option is invoked, the screen
prints verbose messages about failed
packets. The xmodem module could be
incorporated into another communica¬
tions program, such as C-Kermit, with
minimal modifications.
(t ONE COMMUNICATIONS
PROGRAM THAT DOES
AIL THIS ON DOS,
UNIX, XENIX AND VMS?
I CALL THAT II
UNLIKELY...
U THEY CALL IT
TERM”
COMMUNICATIONS SOFTWARE
TERM is available now on AT&T, DEC VAX,
MICROVAX, IBM XT, AT, Sun, Altos, HP series 200,
300, Tandy, Fortune, Convergent, NCR, Sperry,
Zilog, Plexus, Intel, Motorola and many others.
CENTURY
^ SOF T W A R E
9558 South Pinedale
VISA/MC sai, Lake City, Utah 84092
(801) 531-8512
Features:
■ State-of-the-art Lempel-
Ziv-Welch data
compression
■ Exact VT102 Emulation on
ALL systems
■ Full numeric keypad
support
■ Full color support
■ 19.2K file transfers
■ KERMIT Protocol for
mainframes
■ XMODEM Protocol for
bulletin boards
■ Remote PC execution
■ Powerful script language
for customized
applications
■ Wildcard file send/receive
capability
■ Auto-login, dial/redial
modem control
■ Unlimited autodial
directory
■ Performs unattended file
transfers
■ Remote maintenance
capability
■ Online User’s Manual for
instant help
■ Electronic mail/TELEX
interface
CIRCLE NO- 188 ON READER SERVICE CARD
XMODEM.C
The code in XMODEM.C is straightfor¬
ward. The NOREAD( ) and TX( ) macros
and the err( ) function are used to sim¬
plify the code. Static chars, rather than
define statements, are used for SOH
(start of header), NAK (negative ac¬
knowledgement), ACK (acknowledge¬
ment), EOT (end of transmission), CAN
(cancel), and crcinit, because the UNIX
write( ) call needs the address of the
character to be sent. A loop in xget( )
and the fillbuf( ) function manage the
conversion to and from CR-LF line end¬
ings if the text option has been speci¬
fied. To allow the sender time to set up
the XMODEM transmission before the
synchronized characters are sent, a
sleep(lO) call is used in xget( ).
Sleep( ) is a library function that sus¬
pends execution for an interval.
Few constraints are placed on the
code for the XMODEM transmission
functions; however, the XMODEM re¬
ceiver must be able to keep up with the
sender’s transmissions. At 1,200 or even
2,400 bps (bits per second), little dan¬
ger exists of losing characters; higher
transmission speeds place demands on
the code. To be certain that characters
are not lost, the data bytes are not sent
through the checksum or CRC genera¬
tor until the entire data block is re¬
ceived. Some XMODEM programs avail¬
able on bulletin boards update screen
displays during packet transfers, with
the result that they cannot run above
1,200 bps without losing characters.
The bit-level operators in C make
the CRC generator a relatively simple
function. The bytes that are to be added
to the CRC are fed into the generator
one bit at a time, high bit first. The bit
is shifted into a 16-bit CRC accumulator,
and, if the bit shifted out of the CRC
accumulator is a 1, an exclusive-or is
performed on the CRC accumulator us¬
ing the bit pattern 1021H. The process
repeats for all eight bits of the input
character. To make the CRC come out
correctly for XMODEM, two zeros must
be sent through the generator after the
data bytes. These zeros take the place of
the CRC bytes in the packet.
The UNIX alarm signal (SIGALRM)
is used to signal a time-out on the re¬
ceive function, by interrupting the sys¬
tem call read( ) in function rchar( ),
which returns a -1 to indicate an error.
Any other interruption to the read( )
also causes the read to signal a time-out
and the program to recycle and request
the block again. Programs that make
high-priority system calls to the kernel,
such as some windowing programs, in¬
terrupt read( ), but XMODEM is suffi-
148
PC TECH JOURNAL
ACS-1000
• 8 or 4.77 Mhz
• Up to 1 Meg Memory
• 2 Serial Ports
• 1 Parallel Port
• On-Board Floppy
Controller
• On-Board Clk/Calendar
ET-286 plus
• 10/6,12 & 16MHz
• Up to 4 Meg Memory
(Expanded or Extended)
• 3 Serial Ports
• 2 Parallel Ports
• 8 Expansion Slots
• On-Board Clk/Calendar
NOW AVAILABLE:
• Optional lOMhz 80287
Coprocessor
* Bundled LIM EMS Driver
CIRCLE 103 ON READER SERVICE CARD
IBM, UNIX, XENIX, LOTUS, INTEL and MICROSOFT are trademarks of their respective companies.
Push Back
The Envelope:
10 / 6,12
& 16 MHz
EMS Capability
IBM obviously positioned
the AT as the hub of the
microcomputer network. In
this marketplace our prod¬
ucts stand out as the pinna¬
cle of performance and
value.
SPEED
The ET-286 doubles the
clock speed of the AT at 12
MHz and we are already 16
MHz capable. Naturally, the
ET-286 toggles from Hyper¬
speed at 12MHz to 100%
6MHz compatibility for those
applications that demand it.
MEMORY
The ET-286 has access to 4
Megabytes of on-board, 0
wait state memory. This
memory can be used as
regular AT extended mem¬
ory, or, as Lotus/Intel/Micro¬
soft (LIM) expanded
memory (EMS). The ability
to utilize the memory on¬
board as either extended or
expanded memory greatly
enhances its use in scientific
as well as business
applications.
COMMUNICATIONS
There are three on board
serial ports that are configu¬
rable as either RS-422 or
RS-232 depending on the
application. Two parallel
ports further extend your
communications ability. And
there are still 8 expansion
slots for additional I/O.
CUSTOMER SUPPORT
Part of the success of the
ACS products is the avail¬
ability of our people. We
provide the support that
OEM's need in order to win
major contracts: engineering
support, competitive pricing
specialized packaging, and
American made products.
ACS MS-DOS 3.2
We want to help you com¬
pete. That's why we have
licensed MS-DOS 3.2 and
GW Basic 3.2 and made
them available in OEM pack¬
ages at OEM prices.
ACS International, Inc.
2105 Luna Rd., Suite 330
Carrollton, Texas 75006
214-247-5151
TELEX: 709748 ACS UD
XMODEM
ciently robust to immediately resend
the packet. Function cksend( ) uses
rchar( ) to clear the communications
line before an ACK, NAK, or CAN is sent
back to the XMODEM sender.
XR.C
The code for xr and xt uses stock UNIX
C library functions to parse the com¬
mand line and to set the communica¬
tions line for the XMODEM transmis¬
sion. The initialization for the character
trans??? determines whether the pro¬
gram has been invoked as xr or xt.
The termio structures new and old
are used to set and reset the line, and
the structure stbuf is used to get the file
size for files that are to be transmitted.
The SIGINT and SIGQUIT traps prevent
an accidental press of DEL or CtrlA
from aborting the transmission, and the
SIGHUP trap ensures the program’s
cleanup in the event the telephone line
is disconnected accidentally.
The XMODEM protocol is quick
and highly accurate for attended file
transfers. The code in these modules
requires that both sender and receiver
HON ID
I POWER
Introducing Two New Powerful Packages,
BlackStar Basic Development Tools
and "C" Function Library
BASIC DEVELOPMENT TOOLS features four-in-one
"automatic programing" tools. Including SCREEN
BUILDER, B+TREE, HELP MESSAGE SYSTEM
and EZ SCREEN POP-UP WINDOWS. Can be used
separately or together. Compatible with Microsoft
QuickBASIC and Borland Turbo Basic. Comes with 220
page manual and two diskettes.
"C" FUNCTION LIBRARY New ANSI Standard with over 275 functions.
A comprehensive development package for the latest "C" Compilers including
Microsoft and Lattice. Complete source code and demo program, as well as
small, medium and large memory models are included. Plus 317 page
instruction manual and three diskettes.
Special Offer! $99.00 each, both for $175.00
For IBM PC and compatibles. M/C, VISA, add $3.00 for
shipping and handling. California residents add 6.5%.
Shipping outside U.S. and Canada add $15.00.
60 Day Money Back Guarantee.
ORDER TODAY! (800) 722-7853
(213) 306-3020 in California
24-Hour Rush Shipment (credit card orders only).
Sterling Castle, 702 Washington Street, Suite 174
Marina del Rey, CA 90292.
B All trademarks acknowledged.
CIRCLE NO. 198 ON READER SERVICE CARD
STERLING
CASTLE”'
8 O F T W A R E .
machines have the name of the file
entered. Some newer versions of
XMODEM include a batch-level protocol
that sends file-name headers before
each file. Code written tc( incorporate
the batch protocol for transfers between
UNIX and DOS machines would need
to address the difference in the file¬
naming conventions of the two systems:
DOS file names are limited to an eight-
character name with a three-character
suffix, use a backslash instead of a slash
as the separator in path names (except
DOS 2.x, which also allows the back¬
slash), and DOS translates file names to
uppercase. UNIX permits file names in
any combination up to 14 characters;
the slash is used as a directory separa¬
tor; and file names, like commands,
are case-sensitive, thus, MYFILE.DOS,
myfile.dos, Myfile.dos, and mYfile.dos
are all different file names. File names
sent from a DOS system are acceptable
to a UNIX system, but if they are not
mapped to lowercase, they end up at
the head of sorted directory listings.
(Most UNIX file names are lowercase.)
Many UNIX file names, because of their
length, format, or the inclusion of char¬
acters outside the allowed DOS set,
would not be acceptable to DOS ma¬
chines until they were translated to the
format required by DOS.
In addition to its uses in transfers
between UNIX and DOS machines,
XMODEM also can be a time-saver in
transfers between UNIX systems. Send¬
ing files that have been compressed
with pack and bundled with tar is sub¬
stantially faster than the ASCII dumps of
cu and uuep. It is particularly conven¬
ient to be able to shift from ASCII to bi¬
nary transfers while using cu, instead of
having to do some transfers with cu
and others with C-Kermit.
The XMODEM protocol is a useful
bridge between DOS and UNIX. Its
transfers are fast, simple, and reliable;
moreover, it is sometimes the only
means of uploading or downloading bi¬
nary files or of effecting error-checked
transfers of text or source code files be¬
tween the two systems when a UNIX
machine is used to develop DOS pro¬
grams or when a UNIX machine serves
as a terminal for DOS bulletin boards.
Indeed, this article and the accompany¬
ing code were transmitted from a
XENIX system to a DOS machine at PC
Tech Journal using XMODEM for
XENIX and UNIX.
Ronald Florence is a novelist and historian
and a devotee of the UNIX operating system.
His most recent published work is The
Optimum Sailboat (Harper & Row, 1986).
150
PC TECH JOURNAL
Attachmate has answers to your questions
about micro-mainframe communications.
Hardware answers, software answers and
now a guide packed full of answers to some
important questions—questions worth asking
before you make long-term decisions.
What should you know about IBM® standards,
multiple sessions, windows, file transfer, API,
and graphics?
You’ll find the answers and solutions in
Attachmate’s Quick Reference Guide for
Micro-Mainframe Communications —with a
chart comparing IBM, IRMA®, and Attachmate.
For a free copy, call toll free:
1 - 800 - 426-6283
Micro-Mainframe Technology: We put our heart in it!
Attachmate Corporation
3241118th S.E., Bellevue, WA 98005
(206) 644-4010
Copyright ®1986, Attachmate Corporation. IRMA is a registered trademark of Digital Communications
Associates, Inc. IBM is a registered trademark of International Business Machines Corporation.
CIRCLE NO. 165 ON READER SERVICE CARD
BATCH FILES,
I/O REDIRECTION
SIDEKICK "
DOS MENU PROGRAMS,
MOST OF YOUR RAM,
EXECUTION SPEED?
SERVICE INTERRUPTS
No assembly required
RESIDENT PROGRAMS
Easy, pop-up routines
EXECUTIVE PROGRAMS
Run ANY DOS program
DISK SECTOR I/O
Lowest level access
FAST TEXT WINDOWS
Virtual windowing system
KEYBOARD MACROS
Simple, powerful
LOTS OF EXAMPLES
21+ full example programs
MUCH MORE. . .
Over 140 routines in all
LISTING 1: XMODEM.C
/* XMODEM.C copyright 1986 Maple Lawn Farm, Inc.
* exit: 0 if successful, -1 for failure, compile with mlfcu.c:
* cc -i -0 -s -DCU mlfcu.c XMODEM.C -o cu or with XR.C:
cc -i -0 -s XR.C XMODEM.C -o xr, In xr xt */
Compatible, efficient DOS
multi-tasking.
We designed Taskview with effi¬
ciency in mind. During normal
operation, TASKVIEW hides
behind DOS, providing you with
control of up to 10 concurrent or
non-concurrent programs. Just
the touch of a key instantly
switches a program to the fore¬
ground. Included desktop utili¬
ties let you cut and paste from
program to program. Simple to
use and reasonably priced, no
well equipped PC user should
be without it.
Requires: PC/AT/Jr compatible,
DOS 2.0-3.1, 256K RAM, 1
Floppy drive.
Taskview trademark of Sunnyhill Software
Sidekick registered trademark of Borland Inti.
^include <signal.h>
WHY GIVE UP.
extern int
#define WFD
/* error file for remote */
extern FILE
#define DEBUG
^define LF
#define CRC
30-day money back
guarantee
Dealer Inquiries Invited.
#define NOREAD(x, c) (rchar(x, &c)
#define TX(c) write(WFD, &c,
#define ever
Washington residents add 7.9%
International orders add $5.00
VISA and Mastercard accepted.
Sunny Hill
Software^^^
13732 Midvale N. Ste. 206
Seattle. WA 98133
(206) 367-0650 M-F. 8-6 PDT
static char soh = 0x01
To order Toll-Free
call 1-800-367-0651
crcinit
cksum;
CIRCLE NO. 158 ON READER SERVICE CARD
crcsum;
xget(fp, opts)
“If you never thought Turbo
Pascal was a systems program¬
ming language, you've never
seen Turbo Professional.”
Darryl Rubin
Computer Language
For programs that move with
technology—Turbo Profession¬
al—a truly professional library
of subroutines.
150 page reference manual.
Full source—many example
programs.
No royalties charged for
applications.
Requires IBM compatible,
DOS version 2.0 or greater,
Turbo Pascal 2.0 or greater.
Turbo Professional, trademark of Sunnyhill Software
Turbo Pascal, registered trademark of Borland International
char buf[BSIZE]
BSIZE,
debug = (opts & DEBUG),
signal(SIGALRM, onalarm)
signaKSIGINT, kleenex)
sleep(IO)
(crc) ? TX(crcinit) : TX(nak)
for ever (
if N0READO0, inch) C
Dealer Inquiries Invited.
err(“Timeout during SOH");
ckser»d(crc ? crcinit : nak)
continue;
oy plus $5.00 S&H
Washington residents add 7.9%
International orders add $5.00
VISA and Mastercard accepted.
Sunny Hill
Software
13732 Midvale N. Ste. 206
Seattle. WA 98133
(206) 367-0650 M-F. 8-6 PDT
break;
err("CAN block %u", b)
kleenex(-l);
To order Toll-Free
call 1-800-367-0651
CIRCLE NO. 152 ON READER SERVICE CARD
PC TECH JOURNAL
Still the only
integrated
scientific analysis,
graphics, and data
acquisition software.
ASYST'
Macmillan’s widely-acclaimed
ASYST™ Scientific Software still
offers more built-in capabilities than
any other PC software. Its unique
interactive programming environ¬
ment includes such functions as FFT,
smoothing, integration, differentia¬
tion, curve fitting, statistics, differen¬
tial equations, and matrix and
polynomial operations. And all func¬
tions are supported by sophisticated
graphics, such as error bars, scatter
plots, and axonometric plotting.
ASYST’s extensive function set
provides the building-blocks that let
you assemble scientific applications-
fast. RS-232 and optional A/D and
GPIB/IEEE-488 support offer inter¬
face versatility you just can’t get from
other products. And all hardware sup¬
port integrates seamlessly with the
full range of ASYST capabilities.
Free technical support. 60 days of
free technical support help you design,
set up, and fine-tune the perfect sys¬
tem. Ongoing support is available at
a nominal cost.
30-Day No-Risk Offer.
CALL 1-800-348-0033.
In New York state, (212) 702-3241.
Ask for technical literature, including
performance benchmarks.
See Us at Pitcon.
Booths 26034-26036.
Macmillan
Software Co.
An affiliate of Macmillan Publishing Company
630 Third Avenue, New York, NY 10017
ASYST is a trademark of Macmillan Software Co. ASYSTwas developed by Adaptable Laboratories Software, P.O. Box 18448, Rochester, NY 14618
CIRCLE NO. 110 ON READER SERVICE CARD
XMODEM
The ultimate solution
for information interchange...
The ultimate 9-track
magnetic
tape subsystem
for the IBM- PC /XT/AT
and compatibles!
Innovative
Data Technology
offers a variety of 1/2
inch 9-track magnetic tape sub¬
systems for the IBM-PC/XT/AT featuring
the new “LEO” PC tape controller.
“LEO” is a state-of-the-art PC tape controller that
lends itself to the most sophisticated applications in¬
cluding real time data acquisition, multitasking and
true streaming disk back-up. “LEO” comes standard
with an impressive list of features that include a dedi¬
cated microprocessor, up to 64K of RAM for buf¬
fering, high speed thruput with memory mapping
I/O—no DMA channel required, ASCII to EBCDIC
code conversion and external cable connectors for
easy installation.
Supplied on a 5 1/4" diskette is the most compre¬
hensive set of software drivers and utilities available.
Users have a choice between an installable I/O driver
with modules to “Basic” and “C” languages, or an
MT-DOS device driver, which allows direct tape access
under any language supported by DOS 3.1. Also in¬
cluded is “ANSI,” a sophisticated file transfer utility,
“TAP” a comprehensive disk back-up and restore util¬
ity and “TCMD” tape command, a valuable tool for in¬
specting tape data and format. All utilities are menu
driven with help screens for user friendly operation.
IDT manufactures the complete subsystem ... con¬
troller and tape drive. With a commitment to excel¬
lence, IDT staffs a complete customer service
department, offering you assistance to assure top per¬
formance at all times. Contact us today for additional
information.
INNOVATIVE
DATA
TECHNOLOGY
5340 Eastgate Mall • San Diego, CA 92121
(619) 587-0555 • TWX: (910) 335-1610
Western Regional Office:
10061 Talbert Ave., Suite 202
Fountain Valley, CA 92078 • (714) 968-8082
Eastern Regional Office:
One Greentree Center, Suite 201
Marlton, NJ 08053
(609) 596-4538 • TWX: (710) 833-9888
if (inch != soh) C
errC'Bad SOH block %u: %#x», b, (inch & 0xff>);
cksend(nak);
continue;
>
if NOREAD(2, inch) C
errC'Timeout block %u during blocknum", b);
cksend(nak);
continue;
>
if ((inch & Oxff) != b) C
errC'Expected blocknum %u, got %u", b, (inch & Oxff));
cksend(nak);
continue;
>
if N0READ(2, inch) C
errC'Timeout block %u during -blocknum", b);
cksend(nak);
continue;
)
if ((inch & Oxff) != (~b & Oxff)) {
errC'Expected -blocknum %u, got %u",
(-b & Oxff), (inch & Oxff));
cksend(nak);
continue;
>
/* Read in 128 byte block without taking time for checksums or crc. */
for (i = 0; i < BSIZE; i++)
if N0READ(2, buf[i])
break;
if (i < BSIZE) {
errC'Timeout data recv, char #%d", i);
cksend(nak);
continue;
>
if (crc) {
if NOREAD(2, crchi) C
errC'Timeout crc hibyte");
cksend(nak);
continue;
>
crchi &= Oxff;
>
if N0READ(2, inch) C
errC'Timeout %s", (crc) ? "crc lobyte" : "checksum");
cksend(nak);
continue;
>
/* Now, when we have the whole packet, do the checksum or crc. */
for (cksum = 0, crcsum = 0, i = 0; i < BSIZE; i++)
upsum(buf[i]);
if (crc) C
upsum(O); /* needed for crcsum */
upsum(O);
if ((inch & Oxff) + (crchi « 8) != crcsum) {
errC'Expected crc %u, got %u",
crcsum, (inch & Oxff) + (crchi « 8));
cksend(nak);
continue;
>
>
else {
cksum %= 256;
if (cksum != (inch & Oxff)) i
errC'Expected checksum %u, got %u",
cksum, (inch & Oxff));
cksend(nak);
continue;
>
TX(ack);
#ifdef CU
putc('.', stderr);
#endif
if (opts & LF)
for (i=0, iput=0; i < BSIZE; i++) i
if (buf[i] == 0x1a) /* old ms-dos eof */
break;
if (buf[i] != '\r•>
buf[iput++3 = bufti];
>
154
CIRCLE NO. 108 ON READER SERVICE CARD
PC TECH JOURNAL
Any Software.
Any Monitor. Any Time.
Any Software on a
TTL Monochrome Monitor
Any Software on an RGB
Color Monitor 3
Any Software on
an EGA Monitor
Upgrade to EGA without an EGA Monitor
The unique ATI EGA WONDER allows upgrade to the
new EGA graphics standard without the purchase of an
expensive EGA monitor. EGA WONDER runs EGA, CGA,
MDA, Hercules and 132 column software on EGA Color,
RGB Color, TTL Monochrome and Composite monitors.
Extremely flexible, EGA WONDER maintains downward
compatibility to both existing software and existing
monitors. On the internal monitor of a Compaq PC
Portable, EGA WONDER displays EGA, CGA, MDA and
Hercules software via an optional expansion module. 1 2 For
EGA monitor users, the ATI EGA WONDER improves
the display of CGA software by producing high resolution
8x14 text and double scanned graphics. Old CGA software
Trademarks IBM PC Portable - EGA CGA MDA - International Business Machines - Compaq -
Compaq Computer Corporation - Hercules - Hercules Computer Technology - Polaroid Palette -
Polaroid Corporation.
1. Any Software, Any Monitor, Any Time applies to IBM graphics, standards, monitors, software.
2. Optional Compaq Expansion Module (no 132 Columns) Suggested list price $99.
3. EGA, MDA, Hercules software displayed via interlacing. Flickering effect of interlacing
reduced with purchase of anti-glare screen filter.
is now displayed with EGA quality. Completely compatible
to IBM’s EGA, ATI’s EGA WONDER performs smooth
scrolling, pixel panning and windowing. No memory modules
are required because 256K of video memory is a standard
feature. EGA WONDER is the only card able to display
EGA software on the internal monitor of both the IBM PC
Portable and the Compaq PC Portable. EGA WONDER
provides an NTSC Composite signal for interface to a
Polaroid Palette.
SoftSense Automatic Mode Switching
User friendly and easy to use, the ATI EGA WONDER
has built-in SoftSense Automatic Mode Switching. It is
actually able to sense and automatically switch between
EGA and CGA color modes or between EGA, MDA and
Hercules monochrome modes. The ATI EGA WONDER
is compatible at the hardware level to the IBM Enhanced
Graphics Adapter, the IBM Color/Graphics Adapter, the
EBM Monochrome Display Adapter and the Hercules
Graphics Card to minimize software incompatibilities.
EGA WONDER is now available from all major computer
stores, call us today at (416) 477-8804 for more information.
Technology you can Trust.
ATI Technologies Inc., 450 Esna Park Dr.,
Markham, Ontario, Canada L3R 1H5. TLX. 06-966640.
$399
Suggested
list price
XMODEM
fwrite(buf, iput, 1, fp);
b++;
b %= 256;
TX(eot);
if N0READO5, inch) C
err("Timeout during EOT");
>
continue;
TX(ack);
>
kleenex(O);
if (inch == can) t
}
errO'CAN during EOT");
kleenex(-l);
xput(fp, opts)
>
FILE *fp;
if (inch != ack) {
int opts;
err("Non-ACK during EOT: %#x", inch);
C
continue;
register i;
>
char buf(BSIZE],
break;
b = 1,
>
cb.
kleenex(O);
crclo.
}
inch;
int cread;
fillbuf(fp, buf, If)
FILE *fp;
#ifdef CU
char *buf;
signal(SIGINT, kleenex);
int If;
#endif
C
signal(SIGALRM, onalarm);
int i = 0, c;
debug = (opts & DEBUG);
static int cr_held;
rchar(60, &cb);
if (cr_held) {
if (cb == crcinit)
bufti] = '\n';
crc = 1;
i++;
else if (cb == nak)
cr_held-•;
crc = 0;
>
else {
for (; i < BSIZE; i++) C
errO'No startup %s», (crc) ? «"C"' : “NAK");
if ((c = getc(fp)) == EOF)
kleenex(-l);
break;
>
if (c == 1 \n' && If) C
cread = fillbuf(fp, buf, (opts & LF));
bufti] = 1 \r •;
while (cread) C
if (i == 127) <
for (i = cread; i < BSIZE; i++)
cr_held++;
buftil = 0;
return BSIZE;
TX(soh);
>
TX(b);
bufti+1] = '\n';
cb = (~b & Oxff);
i++;
TX(cb);
)
write(WFD, buf, BSIZE);
else
for (cksum = 0, crcsum = 0, i = 0; i < BSIZE; i++)
bufti] = c;
upsum (buf ti3);
>
if (crc) C
return i;
upsum(0); /* needed for crcsum */
y
upsum(O);
crclo = crcsum;
upsum(c)
cb = (crcsum » 8);
char c;
TX(cb);
l
TX(crclo);
register unsigned shift;
>
register unsigned flag;
else i
cksum %= 256;
if (crc)
TX(cksum);
for (shift = 0x80; shift; shift »= 1) f
>
flag = (crcsum & 0x8000);
if N0READ(15, inch) {
crcsum «= 1;
err("Timeout after block %u", b);
crcsum |= ((shift & c) ? 1 : 0);
continue;
if (flag)
>
crcsum A = 0x1021;
if (inch == can) {
>
errO'CAN after block %u", b);
else
kleenex(-l);
cksum += c;
>
>
if (inch != ack) C
err("Non-ACK after block %u: %#x", b, inch);
/* Timeout in rcharO works by deliberately interrupting the read()
continue;
* system call. errno=EINTR, so no reason for a perrorO autopsy. */
>
rchar(timeout, cp)
#i fdef CU
unsigned timeout;
putcC.', stderr);
char *cp;
#else
<
if (debug)
int c;
fprintf(errf, "Validated block %u\n", b);
#endif
alarm(timeout);
cread = fillbuf(fp, buf, (opts & LF));
if ((c = read(RFD, cp, 1)) == -1)
b++;
return -1;
b %= 256;
alarm(O);
>
return c;
for ever {
>
156
PC TECH JOURNAL
XMODEM
onalarmC)
signal($IGALRM, onalarm);
kleenex(sig)
int sig; .
#ifdef CU
if (sig > 0)
cksend(can);
else
fprintf(stderr, u \r\nFile transfer %s.",
(sig) ? "cancelled" : "complete 11 );
fprintf(stderr, "\r\n");
#else
printfO'File transfer %s.\r\n", (sig) ? "cancelled"
resetlineO;
#endif
exit(sig);
'complete"),
cksend(ch)
char ch;
do (
j = rchar(2, &cp),
> while (j != *1);
TX(ch);
/* VARARGS1 */
err(s, i, j)
char *s;
int i, j;
if (debug) (
fprintf(errf, s, i # j)
#ifndef CU
fprintf(errf, "\n");
#else
fprintf(errf, "\r\n")
putc('%', stderr),
#endif
LISTING 2: XR.C
r * XR.C - remote xmodem functions for xenix/unix
* copyright 1986 Haple Lawn Farm, Inc.
% usage: xr|xt Oct] t*d errfile] file
* -c crc (instead of checksum), -t text mode (CR-NL <-> NL)
* compile: cc -i -0 -s XR.C XMODEM.C -o xr
* In xr xt
* To avoid overwriting existing files, received file with same name
* as an existing file is stored as fname-. ♦/
^include <signal.h>
#include <stdio.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/types.h>
^include <sys/stat.h>
#include <termio.h>
#define DEBUG
#define LF
tfdefine CRC
#define BSIZE
^define errx(m,f)
128
printf("%s: 1
printf(m, f)
printf("\n'')
exit(1)
pname), \
FILE *errf;
struct termio
hangup()
resetlineO,
exit(1);
char t *pname,
trans = (av[0]Cstrlen(avCO)) -1]
♦fname;
int c, opts = 0;
struct stat stbuf;
extern int optind;
extern char* ♦optarg;
FILE *fp;
pname = *av;
while ((c = getopt(ac, av, "ctd:?"))
switch (c) (
case *t‘ :
opts |= LF;
break;
opts |= CRC;
break;
opts |= DEBUG; ■
if (!(errf = fopen(optarg, "w")))
errxO'can't open %s", optarg)
setbuf(errf, NULL);
break;
printf("usage: %s Oct] C*d errfile] v file\n", pname);
exit(l);
if (ac ==*1 11 ac == optind)
errxO'need file name", NULL);
fname s av[optind);
if (trans && !(fp = fopen(fname, "r")))
errxO'can't open %s", fname);'
if (!trans) (
if (!access(fname, 0))
strcat(fname, "-");
if (iffp « fopen(fname, "w")))
errxO'can't write %s", fname);
printfO'Ready to %s %s\n", (trans) ? "send":"receive", fname),
if (trans) ..C..,,..,, ... ; ^.
stpt(fname, &stbuf);
printf("%d blocks (128 bytes/block)\n",
stbuf.st_size/BSIZE+1);
printf("Ctrl-X to abort transfer\n")
signaKSIGINT, SIGJGN);
Signal(SIGQUIT, SIGJGN); \
signal(SlGHUP; hangup);
ioctlO, TCGETA, &old);
ioct1(1, TCGETA, &new);
fflush(stdin);
new.C_lflag = IGNBRK|IGNPAR;
new,c_oflag » 0; ; :
new.c_lflag = 0;
new.c_cc[4] = 1;
new.c_cflag &= -PARENB;
new.c_cflag |» CS8;
ioctld, TCSETAW, &new);
(trans) ? xput(fp, opts) : xget(fp, opts)
ioctlO, TCSETA, Sold)
MARCH 1987
Announcing Magic PC—the first breakthrough for database applications developers in over 20 years:
Now you can develop professional applications
1000 % faster than your 4GL or DBMS, totally
free from programming, commands and syntax!
A Magic PC program looks as simple as this. To design an application you quickly fill-in menu-driven decision
tables without having to write a single line of code. For example, just by highlighting the Execute Program
operation on this screen and also highlighting the Item List program in the Program Menu, you tell Magic
PC to pop-up the Item List window shown in the adjacent screen, when the end-user hits the Zoom key.
Magic PC gives your end-user the power to harness and retrieve data instantly, without any commands or
syntax because at runtime you already have built-in options to Add, Delete. Modify, Query and get on-the-
spot ad-hoc information simply by highlighting selections from menus. Dats validation, security and
error-checking are done automatically for you by Magic PC without programming.
Who needs another DBMS?
At last, Magic PC gives you the ultimate applications
design tool, far ahead of 4GL’s, DBMS and Applica¬
tion Generators.
Magic PC breaks through the language barrier with
the revolutionary Un-Language concept:
NO PROGRAMMING, COMMANDS OR
SYNTAX!
Free yourself from your programming language
Magic PC makes you, the professional, completely
free from the drudgery of procedural programming. No
more cryptic commands, syntax or unforgiving
procedural structures, because Magic PC does all the
programming automatically. There’s your competitive
edge. The rest is up to you...
The Professional Choice
Already an international success. Magic PC is a profit
maker and career booster for DP Consultants, System
Integrators, VARs, MIS professionals, System Analysts,
Programmer Analysts and Software Engineers. If you
design PC applications professionally, you can’t afford
not to Un-Language now.
IBM France: “IBM encourages this introduction and
can not help but salute such evolution...”
Israeli Air Force: “We were convinced that it was not
possible to have a design tool powerful enough to im¬
plement real-life applications without a programming
language. Magic PC changed our mind...”
Jeff Duntemann, PC Tech Journal: “It’s probably
the best integrated database applications and screen
generator that I have ever seen.. .very smooth system,
and smoothness comes at a premium these days...”
The Magic PC Secret
You’re so much more productive with Magic PC
because there is absolutely no programming to slow
you down. You design a Magic PC application by simp¬
ly filling-in the Data Dictionary Tables (Files, Fields,
Keys) and the Task Description Thbles (Operations and
Expressions).
Only 13 design Operations harness the power of
Magic PC. Operations are specific enough to eliminate
the need for tiresome syntax, yet elastic enough to pro¬
duce robust custom applications. Use the Operations
to describe what you want and Magic PC makes it
happen. It’s that simple.
Make Task nesting power available with a single
Execute Task Operation. This powerful instruction
triggers Magic PC to execute and display additional
tasks or even external applications through Window
Zooms. The 3-dimensional effect of Window Zoom¬
ing lets you probe deep into your application through
nested windows and manipulate the data underneath.
You describe a Magic PC Task or Program (com¬
posite Tasks) by filling your system analysis flow into
the Task Description Tables. Choose the participating
Data View, and Magic PC executes your desired Opera¬
tions. You interface with the Tables by highlighting your
selections from pop-up menu-driven windows. There’s
nothing to edit except your headings.
You’re not confined to any particular design sequence
as you are with most procedural languages. You can
enter and change any Table spontaneously, on the fly,
as ideas come to mind and Magic PC automatically
maintains the application integrity.
A Magic Inference Engine automatically or¬
chestrates your Task Description Tables into a single
file of internal Knowledge Base Rules for optimum,
bug-free performance. Knowledge Base Rules are ex¬
ecuted by the Magic Run engine for stand-alone run¬
time operation, or by the Magic Lan engine for
unrestricted Novell network sharing. You’re free to
design the Knowledge Base without worrying about the
internal structure.
Discover fast,
language-free
programming
at no risk ^
for only
19
.95
See for yourself how fast you can program language-
free applications with our low-cost limited offei
You’ll get the full Magic PC software unprotected and
limited to 100 records and 450 page documentation
complete with a free Order Entry sample application.
You’ll also get our free telephone support for 90 days!
And your $19.95 will be credited towards the full $695
Magic PC purchase price. Even if you don’t buy Magic
PC right away, keep your $19.95 Magic PC Trial as your
application prototyping tool at this bargain price.
Our No-Risk Guarantee!
You have our no-risk 30-day money-back guarantee:
if you’re not completely satisfied for any reason, ever
Magic PC Trial for $19.95, send it back for a refund
Order now while supply lasts
Call this toll free number now with your Visa
MasterCard or American Express for immediate
delivery, or send the Order Coupon below today to Akei
1-800-345-MAGIC
in CA call 714-250-1718
Yes, please rush me:
□ Magic PC Trial $ 19.95
□ Magic PC $695.00
Add shipping $ 5.00
In CA 6% tax $_
Prices valid in US only. Total $_
Ship to:___
Address:--
City/ST/Zip:_
Phone:_
Aker Corp. 18007 Skypark Circle B2, Irvine, CA 92714
(714) 250-1718, Elec. Mail Dialcom41:AKR001 Telex 4931184
AKR UI OEM and VAR inquiries are welcome.
CIRCLE NO. 153 ON READER SERVICE CARD
Min. requirements PC DOS 2.0. IBM PC or 100% compatible with 512K and hard disl
©1986 Aker Corp. Printed 1/87 Trademarks: Magic PC. Un-Language. Window Zoon
Magic Run. Magic LAN and Magic PC Trial are trademarks of Aker Corp.. IBM Pi
and PC-DOS are trademarks of IBM Corp.. Novell is a trademark of Novell Inc.
PROGRAMMING PRACTICES MICHAEL COVINGTON
Procedural Algorithms in Prolog
Strategies are presented for expressing algorithms in Prolog
as well as translating algorithms from other languages.
E ffective programming is aided by the
use of reference books that are com¬
plete, and most Prolog textbooks do a
thorough job of explaining how to ex¬
press information in Prolog. For exam¬
ple, bird(tweety). means “Tweety is a
bird,” and fly(X)bird(X). means “X
flies if X is a bird.”
Much less has been written about
how to express algorithms in Prolog.
Often, a computation is best described
not as a set of properties and relations,
but as a procedure—perhaps one that
already has been developed and de¬
bugged in a conventional language.
This article presents strategies for
translating algorithms from other lan¬
guages into Prolog. The examples are in
standard Edinburgh Prolog and will run
in most implementations without modi¬
fication. Except where noted, the tech¬
niques are equally applicable to Bor¬
land’s Turbo Prolog, though the sample
programs will require changes, such as
adding declarations and changing I/O
statements. (For a review of three Pro¬
log compilers, see “Prolog Arrives,”
Michael Covington and Andre Vellino,
November 1986, p. 52. See also “Pro¬
gramming in Logic,” Michael Covington,
December 1985, p. 82 and January 1986,
p. 145; and “Programming for AI,” Ex¬
pert Consultant: Applied AI , Richard L.
Schwartz and Robert E. Shostak, Decem¬
ber 1986, p. 191.)
Prolog is often described as a non¬
procedural language. It is really a semi¬
procedural language; a compromise be¬
tween procedural and nonprocedural
programming, it yields some advantages
of each. In a truly nonprocedural lan¬
guage, the programmer would specify
only a logically rigorous set of condi¬
tions the program must fulfill; the com¬
puter would then automatically gener¬
ate an algorithm from them. Such fac¬
tors as the order in which the condi¬
tions were written thus have no effect.
In the interest of efficiency, Prolog
contains some procedural elements.
The Prolog programmer specifies not
only the rules and facts to be used in
solving a problem, but also the order in
which they are to be attempted. Cru¬
cially, the programmer can even specify
that some potential paths to a solution
should not be tried at all. This makes it
possible to carry out computations that
would be severely inefficient, or even
impossible, in pure Prolog.
The key principle of Prolog is the
procedural interpretation of logic. Con¬
sider the following Prolog rule set:
in_north_america (X) in_usa(X).
in_usa(X) in__georgia(X).
in _georgia ( atlanta ).
This can be interpreted as a set of facts
X is in North America if X is in the USA
X is in the USA if X is in Georgia.
Atlanta is in Georgia.
or as a set of procedure definitions
To prove that X is in North America,
prove that X is in the USA
To prove that X is in the USA,
prove that X is in Georgia.
To prove that Atlanta is in Georgia,
do nothing.
The unfamiliar task of drawing infer¬
ences from data is thereby reduced to
the familiar task of calling procedures.
Prolog predicate definitions will be
referred to throughout this article as
procedures , and goals will be referred
to as procedure calls.
CONDITIONAL EXECUTION
A very important difference between
Prolog and other programming lan¬
guages is that, in general, Prolog proce¬
dures have multiple definitions (or
clauses), each being applied under dif¬
ferent conditions. In Prolog, conditional
execution is expressed, not with if or
case statements, but with these alterna¬
tive definitions of procedures.
Consider for example how the
following Pascal procedure might be
translated into Prolog:
procedure writename(X:integer);
begin
case X of
1 : write(‘One’);
2 : write (‘Two’);
3: write (‘Three’)
end
end;
This tanslation could be done by giving
writename three definitions:
writename(l) write(‘One’).
writename(2) write(‘Two ? ).
writename(3) write (‘Three’).
MARCH 1987
159
ILLUSTRATION • MACIEK ALBRECHT
PROGRAMMING PRACTICES
Each definition matches in exactly one
of the three cases. A common mistake is
to write the clauses as follows:
/* poor style */
writename(X) X= 1, write(‘One’).
writename(X) X = 2, write(Two’).
writename(X) X= 3, write (‘Three’).
This gives correct results but wastes
time. Because X is a variable, each
clause matches every procedure call; so
the computer tries each clause, gets
part way into it, and then backs out if X
has the wrong value. It is faster to de¬
sign the clauses so that only the correct
one can be invoked in the first place.
A key to effective programming in
Prolog is to make each logical unit into
a separate procedure. Each if or case
statement should, in general, become a
procedure call. For example, the hypo¬
thetical Pascal procedure:
procedure a(X:integer);
begin
b;
if X=0 then c else d;
e
end;
should go into Prolog as follows:
a(X)b,
c_or_d(X),
e.
c_or_d(0) :- c.
c_or__d(X) :- XOO, d.
This imposes a disciplined organization
that is even more rigorous than the
structured (“goto-less”) programming
style that underlies Pascal; C, and Ada.
Consider another version of
writename that includes a catch-all
clause to deal with numbers the names
of which are not given:
procedure writename (Xrinteger);
begin
case X of
1: write (‘One’);
2: write (‘Two’);
3: write (‘Three’)
else
write(‘Out of range’)
end
end;
(Standard Pascal does not allow the use
of else with the case statement, but
most popular compilers do.) One way
to express the same algorithm in Prolog
is the following:
writename(l) write(‘One’).
writename (2) write (‘Two’).
writename(3) write (‘Three’).
writename(X) X<1, write(‘Out of range’).
writename(X) X>3, write(‘Out of range’).
This gives correct results but lacks con¬
ciseness. In order to make sure that
only one clause can be executed with
each number, the value of X was tested
in each of the last two clauses. In order
to tell the program to print “Out of
range” for any number that has not
matched any of the first three clauses,
the following clauses could be tried,
with limited success:
/* incorrect */
writename(l) write(‘One’).
writename(2) write(Two’).
writename(3) write (‘Three’).
writename(_) write(‘Out of range’).
(Recall that the anonymous variable,
written as _, matches anything.) The
problem here is that the goal
writename(l), for example, matches
both the first clause and the last clause.
If a subsequent goal fails and causes
backtracking through this one, the goal
writename(l) will have two solutions:
one that prints “One” and one that
prints “Out of range.”
Writename should be determinis¬
tic —that is, it should give exactly one
solution for any given set of parameters
and not give alternative solutions upon
backtracking. Therefore, if any of the
first three clauses succeeds, the com¬
puter should be told not to try the last
clause. This can be done with the cut
operator (written as ! ).
The cut operator commits the com¬
puter to take a particular (or potential)
solution without trying alternatives. Sup¬
pose that b is defined as follows:
b c, d,!, e, f.
b g, h.
and that the current goal is b. If the cut
is executed on the first clause, then it
becomes impossible to look for alterna¬
tive solutions to c and d (the goals that
precede the cut in the same clause) or
to b (the goal that invoked the clause
containing the cut). It remains possible,
of course, to backtrack all the way past
b —outside the scope of the cut—and
look for alternatives to the clause that
caused b to be invoked.
What is needed to do in the incor¬
rect writename expression is to put. a
cut in each of the first three clauses.
This changes their meaning slighdy, so
that the first clause (for example) says,
“If the parameter is 1, then write ‘One’
and do not try any other clauses.”
writename( 1) :-!, write (‘One’).
writename(2) :-!, write(‘Two’).
writename(3) !, write (‘Three’),
writename (_) write (‘Out of range’).
Because write is deterministic, it does
not matter whether the cut is written
before or after the call to write. Pro¬
grams are usually more readable, how¬
ever, if cuts are made early.
GUARANTEEING THE OUTCOME
In order to control the flow of program
execution, it is often necessary to guar¬
antee that a goal will succeed regardless
of the results of the computation that it
performs. Occasionally, it is necessary
to guarantee that a goal will always fail.
An easy way to make any proce¬
dure succeed is to add a clause to it
that succeeds with any parameters and
is attempted last:
f(X,Y) X<Y,!, write(‘X less than Y*).
f(_,_).
A call to f succeeds with any parame¬
ters; it may or may not print its mes¬
sage/ but it certainly will not fail and,
hence, will not cause backtracking in
the procedure that invoked it. More¬
over, because of the cut, f is determinis¬
tic (provided its parameters are already
instantiated). The cut prevents the sec¬
ond clause from being used to generate
a second solution with parameters that
have succeeded with the first clause.
Similarly, a procedure can be guar¬
anteed to fail by adding cut and fail at
the end of each of its definitions:
g(X,Y)p:- X<Y, write(‘X less than Y),!, fail.
g(X,Y) Y<X, write( Y less than X’), !, fail.
Any call to g ultimately fails for one of
two reasons: either it does not match
any of the clauses present, or it matches
one of the clauses and ends with cut
and fail. The cut is written next to last
so that it will not be executed unless all
the other steps of the clause have suc¬
ceeded first; as a result, it is still pos¬
sible to backtrack from one clause of g
to the other as long as the cut has not
yet been reached.
In Prolog implementations that al¬
low goals to be treated as data (and this
does not include Turbo), the proce¬
dures make_succeed and make_fail,
which make any goal succeed or fail,
can be defined as:
make_succeed(Goal) :- call (Goal),!.
make_succeed (_).
make_fail(Goal) call(Goal),!, fail.
\
In some implementations, call(Goal) is
written simply as Goal.
Likewise, the procedure once can
be defined so that it allows a goal to
succeed exactly once, thus making any
goal a deterministic one:
160
PC TECH JOURNAL
once(Goal) call(Goal),!.
This procedure backtracks as much as
necessary to get one successful solution
to Goal, then stops. Thus, no matter
how many possible solutions f(X) has,
the goal once(f(X)) returns only the
first solution. If f(X) has no solutions,
once(f(X)) fails.
REPETITIVE COMPUTATION
Prolog offers two ways to perform com¬
putations repetitively: backtracking and
recursion. Of the two, recursion is far
more versatile. However, backtracking
has some interesting uses, such as the
construction of repeat-fail loops. In Pro¬
log implementations that lack tail-recur¬
sion optimization, repeat-fail looping is
the only kind of iteration that can be
performed ad infinitum without causing
a stack overflow.
The predicate repeat is built into
most Prolog implementations. If not
built in, it can be defined as follows:
repeat.
repeatrepeat.
(The built-in version should be used if
available, because in some implementa¬
tions, the definition above does not pre¬
vent stack overflow.)
The repeat predicate always suc¬
ceeds and has an infinite number of
solutions. Thus, any procedure call
bracketed between repeat and fail will
be tried over and over again, even if it
generates only one solution. For exam¬
ple, the following goal displays an infi¬
nite number of asterisks:
repeat, write(‘*’), fail.
The following procedure turns the
computer into a typewriter, accepting
characters from the keyboard and dis¬
playing them ad infinitum, until the the
Break key is used to abort:
typewriterrepeat,
getO(C),
piit(C),
foil.
The loop can be made to terminate by
allowing it to succeed eventually, so
that backtracking stops. The following
version of typewriter stops when a line
terminator (ASCII code 10) is typed:
typewriterrepeat,
getO(C),
Put(C),
C = 10.
If C is equal to 10, execution termi¬
nates; otherwise, execution backtracks
to repeat and proceeds forward again
through getO(C) and put(C).
MARCH 1987
The looping in the latter version of
typewriter can be restarted by the fail¬
ure of a subsequent goal (as in the
compound goal typewriter, foil). To
prevent the loop from restarting, a cut
needs to be added as follows:
typewriter repeat,
getO(C),
put(C),
C = 10,
i.
In effect, this forbids looking for alter¬
native solutions to typewriter once one
solution has succeeded.
A crucial difference does exist be¬
tween repeat-foil loops in Prolog and
repeat-until loops in Pascal. In Pascal,
iteration is accomplished by first exe¬
cuting all the statements in the loop,
then jumping from the end back to the
beginning. In Prolog, however, back¬
tracking may cause control to jump
backward from any goal to any earlier
goal that has alternative solutions. (The
limiting case is repeat, which does
have alternative solutions.) If any goal
in a Prolog loop fails, subsequent goals
are not attempted.
A serious limitation of repeat-foil
loops is that information cannot be con¬
veniently passed from one iteration to
the next. Prolog variables lose their val¬
ues upon backtracking. Thus, there is
no easy way to make a repeat-foil loop
accumulate a count or total. (Informa¬
tion can be preserved by storing it in
the knowledge base by using assert and
retract, but this process is usually slow
and awkward.) With recursion, informa¬
tion can be transmitted from one pass
to the next through the parameter list.
This is the main reason for preferring
recursion as a looping mechanism.
RECURSION
Recursion is a familiar means of imple¬
menting task-within-a-task algorithms,
such as tree searching and Quicksort.
Prolog lends itself well to expressing
recursive algorithms developed in LISP.
However, any iterative algorithm can be
expressed recursively.
Here is the classic recursive algo¬
rithm for computing factorials, as ex¬
pressed in Pascal
function factorial (N:integer):integer;
begin
if N = 0 then
factorial: = 1
else
factorial: = N *foctorial (N-1);
end;
and as expressed in Prolog (change is
to = in Turbo Prolog)
Personalize
your computing
environment.
The MKS Toolkit now contains
the Korn shell command interpreter.
The MKS version of Bell Labs' Korn shell has this and more:
► the full power of the UNIX System V.2
Bourne shell
• the most requested features of
Berkeley's C shell
»the full-UNIX utility of executable shell
files
* command aliases
> interactive command-line facilities
> previous command history and editing
> a powerful programming language
> shell variable expansion
> arithmetic evaluation
All this has been fine-tuned to create the optimum environment under DOS. The Korn
shell is just one of over 100 commands — fully compatible with UNIX System V.2 —
now contained in the MKS Toolkit, including the following:
awk
cat
chmod
cmp
cp
cpio
ctags
cut
date
dd
df
diff
du
echo
ed
egrep
ex
fgrep
file
find
head
help
join
lc
Is
more
mv
nm
od
paste
Pg
prof
rm
sed
size
sort
split
strings
tail
time
touch
tr
uniq
vi
wc
and much, much more
These programs run from the shell or command.com under DOS on machines such as
the IBM PC, XT, and AT, the AT&T 6300, and most PC compatibles. Full documentation
is included. Phone support is available 9-6 EST. Not copy protected.
Everything for only $139.
Mortice Kern Systems Inc.
43 Bridgeport Road East, Waterloo, Ontario, Canada N2J 2J4
For information or ordering call collect: (519) 884-2251
Prices quoted in U.S. funds. MasterCard and VISA orders accepted. OEM and dealer inquiries
invited. UNIX is a trademark of Bell Labs. MS-DOS is a trademark of Microsoft Corp.
CIRCLE NO. 174 ON READER SERVICE CARD
161
HIGH POWER
WITHOUT THE
HIGH PRICE
Microstat® has been the most popular statistics package for microcomputers since we in¬
troduced it in 1978. In the past two years, Microstat has been requested by name on more
military contracts than any other statistics package. When it comes to coverage, ease of
use, accuracy, and value, Microstat is unbeatable. Just some of it features include:
Data Management Subsystem for file creation and
management.
Data Transformations
Hypothesis Testing
Three types of ANOVA
Simple, Multiple, Stepwise Multiple Regression
11 Nonparametric Tests
Factorials, Permutations, Combinations
Batch or Interactive Operation
Read external files (e,g., Lotus,
dBasell, ASCII)
Descriptive Statistics
Scatterplots
Correlation Analysis
Time Series
8 Probability Distributions
Crosstabs and Chi-Square
User’s Manual
Microstat® is
available for MSDOS,
PCDOS, CP/M80,
CP/M86. The price is
$375.00. Multiple copy
discounts and cost-
effective site licenses
are available.
To order, call:
800-952-0472
(for orders)
or
317-255-6476
(tech, info.)
MioWaald
Software Report Card
Infoworld, March 16,1981.
Ecosoft Inc.
6413 N. College Ave.
Indianapolis, IN 46220
Functionally
Documentation
Ease of Use
Error Handling
Support
CIRCLE NO. 131 ON READER SERVICE CARD
Personal REXX
for the IBM PC
★ Interpreter for the full REXX language, including all of the standard REXX
instructions, operators, and built-in functions
★ Sophisticated string manipulation capabilities
★ Unlimited precision arithmetic
★ Direct execution of DOS commands from REXX programs
★ Built-in functions for DOS file I/O, directory access, screen and keyboard
communication, and many other PC services
★ Compatible with VM/CMS version of REXX
★ Uses include:
— Command programming language for DOS
— Macro language for the KEDIT text editor
— Can be interfaced by application developers with other DOS
applications, written in almost any language
Mansfield Software Group, Inc.
P. O. Box 532
Storrs, CT 06268
(203) 429-8402
$125 plus $3 shipping
MC, VISA, AMEX, COD, PO, CHECK
PROGRAMMING PRACTICES
factorial (0,1).
factorial(N,FactN) :- N > 0,
M is N-l,
factorial (M,FactM ),
FactN is N*FactM.
This is straightforward; the procedure
factorial calls itself to compute the fac¬
torial of the next smaller integer, then
uses the result to compute the factorial
of the integer in question.
Now consider an iterative algo¬
rithm to perform the same task:
function factorial(N:integer):integer;
var IJdnteger;
begin
I: = 0;
J:=l;
while I<N do
begin
I: = I+1;
J:=J*I
end;
factorial: = J
end;
In Pascal, this procedure does not call
itself. Its Prolog counterpart, however,
is a procedure that calls itself as its very
last step—a procedure that is said to be
tail recursive :
factorial(N,FactN) fact_iter(N,FactN,0,1).
fact_iter(N,FactN,N,FactN).
fact_iter (N,FactN,I, J )
I<N,
Newl is 1+1,
NewJ is J*NewI,
fact_iter(N,FactN,NewI,NewJ ).
Here the third and fourth parameters of
fact_iter are state variables that pass
values from one iteration to the next.
State variables in Prolog correspond to
variables that change their values re¬
peatedly in Pascal.
The recursive clause of fact__iter
checks that I is still less than N, com¬
putes new values for I and J, and finally
calls itself with the new parameters. The
recursive call is the very last step in this
clause; this whole clause is placed last
so that when it calls itself, no untried
alternatives will be left to save on the
stack. This ensures that the stack will
not grow during the iteration.
In Prolog (as in arithmetic, but not
! as in most programming languages), the
statement X is X+1 is always false. Be¬
cause Prolog variables cannot change
their values, the additional variables
Newl and NewJ have to be introduced.
Newl and NewJ contain the values that
will replace I and J in the next iteration.
The first clause of fact_iter serves
to end the iteration when the state vari-
CIRCLE NO. 263 ON READER SERVICE CARD
162
PC TECH JOURNAL
ables reach their final values. A more
Pascal-like, but less efficient, way of
writing this clause would be:
fact_iter (N,FactN,I, J) 1 = N, FactN = J.
That is, if I is equal to N, then FactN
(which has been uninstantiated until
now) should be given the value of J. By
writing this same clause more concisely
in the earlier procedure, Prolog’s unifi¬
cation mechanism is made to perform
work that would require explicit com¬
putational steps in other programming
languages.
Most iterative algorithms can be
expressed in Prolog by following the
pattern below:
• First, other types of loops (for exam¬
ple, for and repeat-until) are trans¬
formed into Pascal-like while loops.
• Then the computation is broken into
three stages: the initialization, the
loop itself, and any final computations
needed to return a result.
• The loop as a tail-recursive clause
(for example, the second clause of
fact_iter ) is expressed with the
while condition at the beginning.
• The final computations is placed in
another nonrecursive clause of the
same procedure, which is set up so
that the nonrecursive clause executes
only after the loop is finished.
• Finally, the entire algorithm is hidden
behind a “front-end” procedure
(factorial in the above example),
which is what the rest of the program
actually calls.
The front-end procedure not only
passes along its parameters into the tail-
recursive procedure, but the initial val¬
ues of the state variables as well. The
fine art of expressing iteration through
tail recursion in Scheme (a LISP dialect)
is discussed extensively in Structure
and Interpretation of Computer Pro¬
grams , by Harold Abelson and Gerald
Jay Sussman (MIT Press, 1985).
Whenever one Prolog procedure
calls another, one or more pointers are
saved on a pushdown stack. These
pointers indicate what remains to be
done after return (the continuation of
the calling procedure) and what alterna¬
tive solutions remain to be tried (the
alternative set).
Because every single procedure
call places information onto the stack,
recursion would appear to lead inevita¬
bly to stack overflow. However, several
Prolog implementations, including Arity
and Turbo, recognize a special case: if
both the continuation and the alterna¬
tive list are empty, nothing need be
placed on the stack at all. In this cir¬
cumstance, instead of calling the next
procedure in the normal way, the com¬
puter can simply jump into the next
procedure without saving a record of
where to return. If the procedure is
calling itself, this effectively transforms
recursion into iteration.
As was stated earlier, a procedure
that calls itself with an empty continua¬
tion and empty alternative set is de¬
scribed as tail recursive ; the process of
executing such a call without adding
any items to the stack is called tail-re¬
cursion optimization or tail-recursion
elimination. (The “elimination” of tail
recursion does not mean that it should
be banished from the program entirely.
On the contrary, tail recursion should
be used liberally because the imple¬
mentation transforms it into an efficient,
iterative process.)
A quick way to verify that a particu¬
lar Prolog implementation performs
tail-recursion optimization is to try the
following predicate:
test(N) write(N), nl, M is N+1, test(M).
Start with the goal test(l) and see how
long execution continues. If the pro¬
gram runs for more than 10,000 itera¬
tions, it is a safe bet that tail-recursion
elimination is taking place.
CONTROLLING STACK GROWTH
Recognizing a recursive call that has an
empty continuation is easy: the recur¬
sive call is the very last subgoal in the
clause that contains it. Determining
whether the alternative set is also empty
takes more thought.
One way to get an empty alterna¬
tive set is to put the recursive call in
the last clause of a predicate. By doing
this, the recursive call takes place only
after the other alternatives have been
exhausted. An example is the longer
iterative factorial program that was
given earlier. The recursive call takes
place only when all other alternatives
have been exhausted.
In the third clause of the iterative
factorial program, fact_iter calls only
deterministic predicates ( < and is )
before calling itself recursively. In fact,
if this clause had contained any calls to
nondeterministic predicates, the alterna¬
tive set would not have been empty at
the time of the recursive call because
this same recursive call possibly could
have been reached by a different, as yet
untried, path.
The alternative set can also be
made empty by using the cut operation
to rule out alternatives, as in the follow¬
ing replacement for fact__iter:
%
ELP
is at
HELP/Control™ - an on-line help subsystem for the IBM-PC. I
Increases the value of your software. Save development time and money.
HELP/Runtime. A few simple subroutine calls add context sensitive on-line help to your
application. HELP/Runtime includes tested interfaces for Microsoft C, LatticeC, Turbo Pascal,
IBM BASIC (Interpreter and Compiler), Microsoft FORTRAN, IBM COBOL and assembler. It is
distributed with demonstration programs in each language.
HELP/Popup. Add a powerful help system to existing applications, even in dBase or 123,
without reprogramming, even without a programmer. It may be memory resident, or, installed
with an application, it terminates when the application exits, releasing its memory.
HELP/Generation. Use your favorite editor and our concise screen definition language to build
your help files. Compile them into a help system usable by either HELP/Runtime or
HELP/Popup. The package includes sources for sample help files illustrating such features as
full-sized or windowed screens.
HELP/Convenience. The screens include highlighted captions. The user selects a caption with
the cursor control keys and advances to a new screen, just as with 123.
HELP/Documentation. A detailed manual, both on-line and printed, for the documentation
writer and programmer includes instructions which may be incorporated into the user manual.
HELP/Environment. PC-DOS 2.0 or greater is required. HELP/Runtime requires
approximately 9K for code and buffers for full size help screens.
HELP/Pricing. The complete package (software, both manuals, and demo programs) costs
$125.00 and includes a royalty-free license to add HELP/Runtime to your applications and to
make 25 copies of HELP/Popup. A demonstration diskette, including the on-line manual, costs
$15.00. A free update to Release 1.1 is available to registered owners. To order, or for more
information (including dealer, multiple-copy and site-license pricing) call MDS at 207/772-
5436. We accept MasterCard and VISA.
MOS. INC., P.O. BOX 1237, PORTLAND. MAINE 04104
hand
MARCH 1987
CIRCLE NO. 146 ON READER SERVICE CARD
163
PROGRAMMING PRACTICES
Storage Dimension's
SpeedStor 286 BIOS
from Award Software
for use with PC ATs and
XENIX System V ,
Novell Advanced
Netware
■ Overcome drive table limitations
■ Includes low-level initialization
and disk drive advanced
diagnostics
■ 30% faster than IBM's BIOS
■ $129- Retail. Dealer and
distributor pricing available
STORAGE
DIMENSIONS
Supports Seagate ST4096, Miniscribe
6085 and the following:
Seagate
ST251, ST4051, ST4096
Maxtor
XTJ085, XT1105, XT1140,
XT2085, XT2140, XT2190
Miniscribe
6074, 6085
Micropolis
1325
Control Data
Wren II 94155-86
Microscience
HH1050
Newbury
NDR1085, NDR1140, NDR2190,
Priam Vertex
V150, V170, V185, 519
Toshiba
MK54F, MK56F
The Experts in High Capacity PC Storage
408 - 395-2688
981 University Ave.
Los Gatos, CA 95030
Storage Dimension's family of high performance products for PC storage.
■ SpeedStor subsystems from 42MB to 640MB ■ SpeedCache caching software
■ SpeedStor hard disk integration software ■ Extended drive table ROMs
■ 60MB tape backup (DOS, Xenix, Novell) ■ SpeedStor 286 BIOS
CIRCLE NO. 176 ON READER SERVICE CARD
Attention Realia COBOL Users:
SCREENIO 2.0
Screen Manager for COBOL Professionals.
A strictly COBOL approach to screen management, written by and for COBOL
professionals. Screen Design is easy with SCREENIO. You take care of your
application. We take care of the screens! Fully compatible with Realia COBOL.
What does it do?
Interactive Screen Design, Full Feature Screen Painter, COBOL Data Field
Specifications, Edit Masks, Automatic Error Detection, Data Validation, High
Speed Video, Full Compatibility, Window Panels , Hot-Fields, Key Redefinition,
Foreign Language Capability, Full Color Support, Cursor Management, PC Speaker
Control, Screen Libraries, and Very User Friendly. We’ve thought of everything!
And Best of all:
No Facility, No Runtime Fees, Superb Support. Only $400 Plus Shipping.
Ask about our FREE demo pack and SCREENIO+Realia Package Deal!
NORCOM
Northern Computing Consultants
Post Office Box 020897
Juneau, AK 99802-0897
(907) 780-6464
Telex: 5106014951 (NORCOM)
- Amex MC Visa Check -
CIRCLE NO. 191 ON READER SERVICE CARD
fact_iter(N,FactN,I, J)
I < N,
Newlisl+l,
NewJ is J*NewI,
i
fact_iter(N,FactN,NewI,NewJ ).
fact_iter(N,FactN,N,FactN).
Here the recursive call occurs in the
first clause, but the cut guarantees that
the second clause need not be consid¬
ered as an alternative. Moreover, it does
not matter whether the predicates that
were called before the cut are deter¬
ministic or not; the cut rules out any
backtracking through them.
This technique should be used
with caution: it works in some Prolog
implementations, including Turbo, but
not all. In Arity Prolog 4.0, it appears to
work in compiled programs, but, curi¬
ously, not in interpreted ones.
Finally, some Prolog packages
empty the alternative set under certain
conditions by looking ahead to other
clauses. For example, the following pro¬
gram is tail-recursive in interpreted
Arity Prolog even though it does not
appear to be:
test(X) write (X), nl,
NewXisX+1,
test(NewX).
test(0).
When X is nonzero, the interpreter
looks at the heads of both clauses be¬
fore trying either. It sees that the sec¬
ond clause cannot work with nonzero
X, so it enters the first clause with the
alternative set empty. This mechanism,
called indexing , is seldom well docu¬
mented and should be tested tho¬
roughly before it is relied upon.
REFERENCES
Abelson, Harold, and Gerald Jay Suss-
man. Structure and Interpretation of
Computer Programs. Cambridge,
Massachusetts: MIT Press, 1985-
Clocksin, W. F., and C. S. Mellish Pro¬
gramming in Prolog. Second edition
Berlin: Springer-Verlag, 1984.
Kluzniak, Feliks, and Stanislaw Szpako-
wicz. Prolog for Programmers. Lon¬
don: Academic Press, 1985-
Sterling, Leon, and Ehud Shapiro. The
Art of Prolog. Cambridge, Massachu¬
setts: MIT Press, 1986.
Michael Covington is performing research in
automated reasoning and natural language
understanding at the University of Georgia.
164
PC TECH JOURNAL
Announcing
AST Premium/286,
Discover AST Prernium/286. The First
AST Quality Uncompromising AT C
More than two million people have made
us the first choice in PC Enhancement
For over five years, you've known AST as
the leading PC enhancement company
Now, we're introducing the ultimate
enhancement: AST Premium/286. The
first AT-compatible personal computer
with AST performance and reliability More
flexible and upgradeable. Skillfully com¬
bining lightning fast processing speed and
uncompromising compatibility.
AST FASTslots:™ Processing speed¬
ways. Forming the foundation of the
AST Premium/286's increased speed are
our FASTslots. This advanced architec¬
ture improves overall performance so there's
enough built-in power to satisfy even
the most demanding user.
The AST Premium/286 operates 60%
faster than an 8MHz PC AT® as mea¬
sured by the Norton Utilities™ Version 3.0
Syslnfo. And maintains full compatibility
with standard PC and AT-based enhance¬
ment cards. It also provides for a power¬
ful, easily upgradeable and expandable
future, accommodating the next generation
of accelerator and high-performance
enhancement cards.
Prices Start
At $1995.00*
A Heritage Of Software Compatibil¬
ity. Software compatibility has always
been one of our strong points. Shipped
with the industry-standard MS-DOS®
3.1, AST Premium/286 is compatible with
widely accepted operating systems such
as IBM® PC-DOS™ Concurrent DOS™ and
XENIX™ It's also designed to get the most
out of multitasking software packages like
Microsoft® Windows, DESQview™and
TopView™
Applications-oriented. Keyboard-
selectable operation at 10,8 or 6MHz means
virtually all popular off-the-shelf IBM
PC and PC AT application software is
immediately compatible. All your favorites,
including Microsoft Word, Lotus® 1-2-3,®
Framework™ Symphony,® dBASE® III and
AutoCAD™
Attain your fullest software poten¬
tial. AST's advanced architecture also
provides faster and more flexible mem¬
ory addressing. While built-in Enhanced
expanded memory capabilities—AST
FASTRAM,™ expandable to 2MB in a single
slot—let you break the 640K DOS bar¬
rier. Create bigger spreadsheets and sort
larger databases. And enjoy the uninter¬
rupted workflow benefits of multitasking
using current DOS versions, with full sup¬
port for protected mode software built-in.
Fast access disk storage. Comple¬
menting AST Premium/286's speedy opera¬
tion is a full line of disk systems. There's
a 20MB, 40MB and a 70MB hard disk. Both
the 40MB and the 70MB offer more storage
and faster access times—below 30msec -
than the PC AT's fixed disk. And our
external disk /tape systems, featuring
advanced SCSI architecture, allow easy
expandability.
Personal Computer With Legendary
□mpatibilily and Lightning Speed.
More standards are standard. We
build-in our AST FASTRAM™ memory card.
And most models include our own multi-
mode enhanced graphics adapter, suppor¬
ting IBM EGA, CGA and Monochrome, and
Hercules Graphics Card™ display modes.
Compatible with AST and IBM
Products. AST Premium/286 is designed
to remain your productivity partner for
years to come. Choose it with confidence
for single and multitasking applications,
individual and shared environments alike.
Use it as an engine with other AST prod¬
ucts to form powerful application work¬
stations for desktop publishing, CAD/CAE
and more. Or to increase connectivity use
it as a network file server, to communicate
with IBM mainframes and minicomputers,
or to manage multiuser environments.
Solutions that are ready to go.
We also offer a number of pre-configured
workstation solutions tailored for maxi¬
mum performance in your application.
Combining our proven products, from
local area networking and data commu¬
nications to extra memory and I/O to
laser printers and disk systems, our solu¬
tions are all designed to increase your
business productivity.
Quality across the board, around
the world. When you buy AST products,
you're also purchasing a worldwide repu¬
tation for service, support and product
dependability. AST Premium/286 is backed
by a one year limited warranty, and our
worldwide network of certified dealers and
service centers.
AST Premium/286—The system
and the solutions. For more information
call our Product Information Center at
(714) 863-0181 or send the coupon to:
AST Research, Inc., 2121 Alton Avenue,
Irvine, CA 92714-4992.
Yes, I want to know more about AST
Premium/286 Solutions. Send me more
information today.
Name:.
Title:—
Company:.
Address:—
City:
.State:.
Zip:_Telephone: J_1_
My applications:
-Desktop Publishing_Multiuser
_Mainframe/Minicomputer Connection
_Multitasking_General Business
Send to:
AST Research, Inc., 2121 Alton Avenue,
Irvine, CA 92714-4992 Attn: M.C.- PCTJ3/87
OIPCTHOOOBOIPM
>
Seven industry-standard
expansion slots; 1 PC-
compatible slot, 6 PC AT-
compatible slots, including
two AST FASTslots. FASTslots
provide no wait state oper¬
ation with a high-speed
direct interface to the 10MHz
80286 processor. Advanced
architecture accommo¬
dates the next generation
of accelerator and high-
performance enhancement
cards. It's also an open archi¬
tecture for easy develop¬
ment and system integration.
;
J L
Two AT-compatible expansion slots
with a plus: a third bus connector fea¬
turing lightning-quick CPU access
time, for use with specially-designed
cards like the AST FASTRAM Enhanced
memory card. Expandable to 2MB in
single slot, FASTRAM supports a variety
of addressing capabilities-Enhanced
EMS, EMS, extended (protected mode)
and conventional memory addressing.
Enhanced, low-profile 101/102-key key¬
board with separate numeric keypad,
dedicated cursor control and extra
function keys. International versions
available.
AST Premium/286 is shipped with MS-
DOS and GW BASIC,® and it's fully
compatible with a wide variety of oper¬
ating systems, operating environment
and utility packages, and application
software.
Indicators let you check your clock
speed-user-selectable at 10, 8 or
6MHz. Reset button allows easy cold¬
booting. Security lock prevents unau¬
thorized keyboard access.
"The Perfect 10"
10MHz, 0 wait-state operation,
faster than the 8MHz PC AT, with
IBM PC AT hardware and software
compatibility.
Supports standard PC, PC AT and
AST FASTslot cards. With AST, you
start with a lot, like our included
FASTRAM Enhanced memory card
and multimode Enhanced Graphics
Adapter, but you've also got a lot
of options. We offer the widest range
of compatible enhancement prod¬
ucts and peripherals to suit your
needs-a true one-stop solution
allowingyou to expand and upgrade
your system with the assurance of
future service and support.
Compare the increased speed of the AST
Premium/286 agfiinst the top competi¬
torsfor yourself. (Basis: Norton Utilities
Syslnfo Version 3.0)
AST markets products worldwlde-in Europe call: 44 1 568 4350; in the Far East call: 852 0499 9113; in Canada call: (416) 826-7514.
AST Premium/286, FASTslot and FASTRAM trademarks of AST Research, Inc. IBM, Personal Computer AT and PC AT registered trademarks and PC-DOS and TopView trademarks of International Business Machines Corporation. Lotus, 1-2-3 and Symphony
registered trademarks of Louis Development Corporation. dBASE registered and Framework trademark of Ashton-Tate. AutoCAD trademark of AUTODESK, Inc. Microsoft, MS-DOS, XENIX, and GW BASIC registered trademarks of Microsoft Corporation.
DESQview trademark of Quarterdeck Office Systems. Hercules Graphics Card trademark of Hercules Computer "technology. Norton Utilities trademark of Peter Norton Computing, Inc.UNIX trademark of AT&T Bell Laboratories, Concurrent DOS trademark
Digital Research. Copyright © 1986 AST Research, Inc. All rights reserved.
Based on industry-standard native
80286 technology, complemented by
AST advanced architecture.
Coprocessor socket
accepts 8MHz
80287 devices to
execute math- and
floating point-intensive
programsfaster.
CIRCLE NO. 126 ON READER SERVICE CARD
Ana V Curve Fitting-' B Much More dL
^JS^KSSSS-
B $ss§t
^R P rfNGAT$3595
IBM is a
registered trademark of
International Business Machines Corp;
Apple is a registered
trademark of Apple Computer, Inc.
APPLE 64 PAGES 264 PRODUCTS
IBM 48 PAGES 94 PRODUCTS
INTERACTIVE MICROWARE, INC.
POB 139, Dept. 237, State College, PA 16804
Phone: (814) 238-8294 • Telex 705250
Serial Card
EXTENDS SPEED
AND FLEXIBILITY
OF PC APPLICATIONS
New improved 8-channel ACL™ serial card now offers the
option of RS422 and RS485 compatibility.
The new card provides all the standard ACL “smart
card” features... flexible address decoding, program¬
mable interrupts, expandable options via software, and
the ability to download custom programs... now the
ability to operate over greater distances and
speeds of RS422 applications. In addition,
the new card enables PCs to interface
with industrial process controls ,
via RS485 links.
Call for free literature that
explains how the improved^
ACL Serial Card can t
expand your PC’s
multiuser
0 l °
~ofiV
1 r/‘TH
jfu]
rTei
I M
lIKll
11 * J T
11 • j i j
Hsj %Mkht
For information interchange, backup and archival storage,
IBEX offers a 9-track, IBM format-compatible V 2 " magnetic
tape subsystem for the IBM PC, featuring:
■ IBM format 1600/3200 and 800 cpi.
■ Software for PC-DOS, MS-DOS.
■ Also for DEC, VAX, VME,
S-100, RS-232, IEEE 488.
Write, phone or TWX for information.
IBEX COMPUTER CORR
20741 Marilla St.
Chatsworth, CA 91311
(818) 709-8100
TWX: 910-493-2071
CIRCLE NO. 177 ON READER SERVICE CARD
”£°. D . u f: ADPleP£
jJ^^^^^fi!!!jRtog C raP h V;. Br °?^ectr^
CIRCLE NO. 149 ON READER SERVICE CARD
QuickBASIC just got quicker with
1== QuickPak
QuickPak is a superb collection of enhancements, subroutines, and
instructional material designed to help you get the most out of pro¬
gramming in BASIC.
■ Powerful assembly language routines to give your programs more
speed, more power, and full access to DOS and BIOS services.
SORT all or part of a string array with one command! Complete
windowing capability — display help screens instantly, overlay
text. FIND any string or sub-string within an entire array regard¬
less of capitalization — accepts wildcards. READ directories into
your programs from any drive or
path. READ/WRITE disk sectors
— create your own DOS utilities! : ' T1
MANY, many more programs j \
■ Professionally written QuickBASIC i**
routines and functions. I
Powerful input routines for text,
dates, and numbers. Menus, \ /
scroll bars, date/time functions, 1 jgg§v __
and much more. \ jjKKF
■ The Assembly Tutor — a complete _
guide to learning assembly language
from a BASIC perspective. Learn how to
create your own routines and extensions.
■ Tips and Tricks book — packed with .
clever ideas and techniques to help
you be a better programmer.
You get all this, all of the source code A
for every program included , and a
thirty-day money back guarantee for '
only S69.00. \
No royalties are required for using any \
of the QuickPak routines in your pro¬
grams. Not copy protected, of course.
MdckPak
U CRESCENT SOFTWARE
64 Fort Point Street, East Norwalk, CT 06855
(203) 846-2500
QuickPak requires Microsoft QuickBASIC or BASCOM, DOS 2.0 or higher. Visa, M/C, C.O.D., or checks accepted.
168
CIRCLE NO. 208 FOR APPLE, 209 FOR IBM
CIRCLE NO. 145 ON READER SERVICE CARD
PRODUCT WATCH
Reviews
and
Updates
i
REPERTOIRE
-ps-
:
J
PMI
__|§L
FILEMAX
1
Grand Max Software
•
— —
Corporation
-4- PH-
MACE UTILITIES
Paul Mace Software
BASTOC
JMI Software Consul¬
tants, Inc.
REPERTOIRE, version 1.3
PM
4536 S.E. 50th
Portland , OR 97206
5031777-8844
PRICE: $89
CIRCLE 351 ON READER SERVICE CARD
M odula-2 systems have not engen¬
dered the same toolbox generation
that pervades the C and Turbo Pascal
markets. Typically, most Modula-2 com¬
pilers come with a set of skeletal librar¬
ies. Users then create their own sets of
higher level routines for screen man¬
agement, extended I/O services, and
graphics. To fill part of that need, PMI
has introduced repertoire, a collection
of high level tools for Modula-2 pro¬
grammers. This package contains a
screen management package with natu¬
ral language analysis facilities, a screen
editor, and a window oriented editor.
Indexed file I/O and low-level services
complement the package.
repertoire is designed to support
two Modula-2 compilers—Interface
Technologies Corporation’s M2SDS and
Logitech, Inc.’s Modula-2. (For a review
of these products, see ’’Modular Devel¬
opment,” John T. Cockerham, this issue,
p. 114.) PMI delivers the routines on
two diskettes or as a set of four for
both compilers for an additional $20.
The installation routines are well docu¬
mented in the manual.
The repertoire manual is very com¬
plete and includes a comprehensive in¬
dex. The writing is exceptionally clear.
The copy, however, is less clear. The
type is blurred and microscopic.
In a radical departure from most
software companies, PMI also includes
the Modula-2 source code in the base
price. The author’s stated purpose is to
allow the user to support some of the
code and reserve the difficult bugs for
company support.
The use of the screen system starts
by creating the screen template with a
basic text editor. This template is a se¬
ries of lines that indicate to the screen
manager the screen number, data fields,
colors, acceptable user responses, and
the next screen in sequence. The speci¬
fications are fed to the screen compiler
(its source code is included with the
package) that creates a .DSP file. The
programmer calls up a screen by calling
the screen manager and specifying the
.DSP file and the screen number. The
screen manager interprets the contents
of the .DSP file. Included with the
screen manager is a simple,, screen-
oriented text editor that allows a uni¬
form user interface for text entry.
The natural language facilities are
actually a pattern expression evaluator.
The pattern can include Boolean opera¬
tions on the presence or absence of a
string from the test string, the length of
the test string, and the relative positions
of words within the test string. The rou¬
tine returns an index into the pattern
string where the match occurred. For
example, pattern string
‘chicken’ & ‘pot’ \ ‘garage’ & ‘car’
defines two patterns. The first searches
for chicken and pot in a string; the sec¬
ond searches garage and car . The ex¬
pression evaluator returns 0 for no
match, 1 for a match of the first pattern,
and 2 for the second. For example:
A chicken in every> pot returns 1.
Two cars in every garage returns 2.
Chicken potato pie returns 1.
A chicken in every car returns 0.
An option is provided to match
only whole words, and the word-delim¬
iting characters may be specified by the
user. With appropriate user-written pat¬
terns, the string expression evaluator
can be used to create a simple natural-
language command interface.
PMI has written these routines to
accommodate a multitasking environ¬
ment. The windowing and screen-
oriented text editor can be invoked by
several user-written Modula-2 processes
simultaneously; several editing windows
can be open. Text exchange can be per¬
formed between the windows.
With version 1.3 of repertoire, PMI
introduced an indexed file system. This
system allows variable-length records
and is quite fast. The file manager
keeps the linked-list file index in RAM
at all times, searching through RAM for
the desired record. The index is up¬
dated only when the file is closed. An
optional programmed mode saves the
index with every update to the file. If
the index is totally lost, a recovery
mechanism automatically runs when the
file is reopened, regenerating the index.
To overcome the differences be¬
tween the two Modula-2 systems’
implementations of low-level language
facilities, PMI includes its own low-level
routines. These routines fill in where
the two implementations fall short. For
the Logitech system, the routines pro¬
vide long cardinal and long integer rou¬
tines. For the Interface Technologies’
system, the routines provide alternative
implementations of the string functions.
The screen system is for text only.
The text editor uses the F10 key to sig¬
nal the end of data entry rather than the
Enter key. Using the source code, this is
a trivial change to make.
MARCH 1987
169
Get a Grip
on Assembly
Language.
The award winning
Visible Computer:
The Visible Computer is a book and
software combination for mastering
the elusive skills of assembly lan¬
guage. PC Tech Journal took one look
and made it their September ’85
“Program of the Month. ”
Its an animated simulation of the
PCs microprocessor that lets you see
with your own eyes how assembly
language works. YouTl be using it as
a debugging tool for years to come.
Its a tutorial A lot of people think
the 350 page manual is the best book
on assembly language ever written.
It's 45 demonstration programs youTl
execute with the simulator, from simple
register loads to advanced programs
that manipulate interrupts and perform
file I/O. And what you’ll learn applies to
all 86 family proces- Cm AP
sors, including the ^MjW %
80186 and 80286. not copy protected
The Visible Computer for IBM PC/XT/AT and true
compatibles. If your dealer doesn’t have it, order direct:
Software Masters, 2714 Finfeather, Bryan, TX, 77801.
(409) 822-9490. Please include $3.00 shipping.
Bank cards accepted.
processor as it executes programs.
Software Masters
PRODUCT WATCH
In today’s marketplace, very few
manufacturers will take the risk of sup¬
plying the source code with their prod¬
ucts, especially one as well conceived
and well executed as repertoire. The
routines offered in this package provide
a Modula-2 developer with a useful set
of high-level tools that are not available
in the base language. They represent an
outstanding bargain.
—JOHN T. COCKERHAM
FILEMAX
Grand Max Software Corporation
P.O. Box 10580
Portland , OR 97210
503 / 226-0808
PRICE: $79.95
W ith the proliferation of hard disks
comes an increased interest in pro¬
grams that organize and manage hard¬
disk files and directories, filemax is a
disk management utility with an impres¬
sive set of features, including directory
tree copying, directory renaming, file
recovery, and disk optimization.
Unlike many popular utilities, file-
max is not a terminate-and-stay-resident
program; it is intended to be invoked
periodically, as needed, for directory
viewing, organization, and clean up. An
installation utility is provided to allow
the user to modify program characteris¬
tics such as keyboard set-up, sound (on/
off), and help file path. The filemax pro¬
gram is not copy protected.
filemax uses full-screen output and
function-key command driven input.
The output screen is split into two
areas: the top 19 lines display outputs
and the bottom 6 lines display prompts.
A small menu in the lower left screen
corner lists valid function keys and
describes their use. On-line help is al¬
ways accessible in filemax with the FI
key. The help screens provide brief de¬
scriptions of options that are available
at any point in the menu hierarchy.
filemax’s functions are in three
categories: directory manipulation, file
manipulation and display, and manipu¬
lation of the file allocation table (FAT).
Among the directory functions are
commands to move, rename, create,
delete, and sort directories. The move
and delete functions are particularly
powerful; using them the user can mod¬
ify entire directory chains. The move
directory command allows a directory
to be inserted before, after, or within,
that is, as a child subdirectory to any
other directory. The delete directory
command requests verification that the
directory’s files and all of the subdirec¬
tories are to be deleted. With the sort
command directory entries can be
sorted on any combination of name, ex¬
tension, date, time, size, or attributes in
either ascending or descending order
by the sort field.
The supported file manipulation
functions include copy, move, rename,
delete, compare, change attributes,
change date, and undelete. Files that
originally occupied only one cluster can
be recovered in one operation with the
undelete command. For multicluster
files, undelete allows the user to recon¬
struct the deleted file’s cluster chain by
selectively viewing available clusters
and including the appropriate ones in
the chain. Another function, find string
command, searches for a specified char¬
acter string in a file or range of files.
Like all of the file functions, it allows
the user to select a range of files upon
which to operate.
The FAT analysis portion of filemax
provides a well-designed display of the
FAT that shows the chaining of clusters
in files, open clusters, bad clusters, and
cross-linked clusters. The contents of
any cluster can be viewed in either text
or hexadecimal format.
An option called “tune up” allows
the clusters on the disk to be reorgan¬
ized in such a manner that all files are
contiguously allocated on the disk and
all subdirectories are placed at the
beginning of the disk. However, the
tune-up feature of the tested version re¬
flects a possibly serious design flaw. As
clusters are rearranged on the disk, file-
max keeps track in RAM of the corre¬
sponding changes to the FAT chaining
and directory entries. This information
is written to disk only at the completion
of the tune-up operation. Any unex¬
pected interruption of the operation,
for example, from power loss or acci¬
dental rebooting can result in signifi¬
cant damage to the file structure of the
disk, perhaps rendering it unreadable.
CIRCLE NO. 168 ON READER SERVICE CARD
170
PC TECH JOURNAL
filemax 3.42 contains another
annoying bug that shows up when drive
B: is referenced on a single-diskette-
drive system. The program produces an
error box that contains the message GX
I/O ERROR and a display of registers, at
which point the machine has to be
rebooted. Using the assign command to
assign B: to A: causes a similar problem.
filemax has difficulty coexisting
with some pop-up menu programs and
device drivers. When Hersey Micro
Consulting’s fansi-console or the Word¬
Perfect Library Calendar was installed
before filemax was started, the system
hung when filemax was exited. When
filemax is running, it directly uses the
keyboard interrupt and does not pass
through unrecognized keys (by calling
the previous keyboard vector address).
The documentation for filemax con¬
sists solely of a 19-page overview of
program operation. Considering the
complexity of the program and its capa¬
bilities, this is rather sparse information.
Users familiar with DOS disk and direc¬
tory structure, and who have used other
disk utilities, such as the Norton Utili¬
ties, will make effective use of filemax.
However, the hierarchy of menus and
functions is complex; even the veteran
programmer will need time to master
program operation.
—GLENN ROBERTS
MACE umiTEES, version 4.0
Paul Mace Software
123 N. First Street
Ashland, OR 97529
8001523-0258
PRICE: $99
CIRCLE 353 ON READER SERVICE CARD
M ace Utilities from Paul Mace Soft¬
ware will be of special interest to
anyone who has ever accidentally for¬
matted a hard disk that contained valid
data. Mace Utilities can reconstruct a
hard disk after a format, and more.
The IBM description of the DOS
FORMAT command has a dramatic cau¬
tion warning users that formatting de¬
stroys all of the data on the target disk.
However, the DOS Technical Reference
manual states, “When formatting a fixed
disk, FORMAT checks all locations with¬
in the DOS partition, but does not phys¬
ically format them again.”
The FORMAT procedure consists of
two distinct operations: physical format¬
ting and logical formatting. Physical (or
low-level) formatting, which is per-
Now you can take command of MS-DOS with Command
Plus, the programming shell and command processor that
replaces COMMAND.COM in Versions 2.0 and above.
What this means is that you can now program efficiently
in DOS without having to learn UNIX.
Programming efficiently means that Command Plus
will increase your programming productivity and flexibil¬
ity by virtually eliminating the repetitive tasks DOS
COMMAND requires.
For example, Command Plus’ aliasing function lets you
create fast, memory resident macros, while the history com¬
mand lets you use the cursor keys to recall, edit and exe¬
cute commands that you ran up to 48 command lines ago.
What's more, Command Plus also equips you with
Script, a batch processor that's easy to learn and
unbelievably powerful. It's Pascal-like language includes
formed only on diskettes, builds the
skeleton (the so-called sectors) onto
which a logical DOS disk structure is
built. The hard disks are already physi¬
cally formatted when shipped by IBM.
Logical (or high-level) formatting of a
hard disk actually consists only of ana¬
lyzing it for any defective areas, and of
preparing it to accept DOS files by ini¬
tializing the root directory and the file
allocation table (FAT).
IBM’s caution is not entirely accu¬
rate because FORMAT does not destroy
control loops, conditionals and variables which let you
create unique systems utilities.
In short, Command Plus means that you can now pro¬
gram easily and efficiently in the familiar DOS without
having to learn UNIX.
It’s no wonder that Ray Duncan has already called Com¬
mand Plus “a very well designed and sound product!’
And has written that “The regular expression support,
the enhanced copy, move and del commands, and the
browse utility are particularly neat!'
At only $79.95, plus shipping and handling, the price of
Command Plus is pretty neat, too.
So, if you want a sure-fire way to take command of DOS,
or if you want more information about Command Plus, call
us at (800) 992-4ESP. In California, call (213) 390-7408.
VISA and MasterCard accepted.
MS-DOS is a registered trademark of Microsoft Corporation.
(800)992-4ESP (213)390-7408
CIRCLE NO. 190 ON READER SERVICE CARD
*
INTRODUCING
THE SURE-FIRE WAY
TO TAKE COMMAND OF
INTRODUCING
COMMAND PLUS
ONLY $79.95
MARCH 1987
171
PRODUCT WATCH
a hard disk’s data area. The root direc¬
tory and FATs are cleared with zeros,
but data previously placed on the disk
are still there and may be recovered.
Because the content of a subdirec¬
tory is stored as -a-file within the data
area, subdirectories are not destroyed
by FORMAT and also can be recovered.
All that is lost during a format is the
original root directory pointer to the
subdirectory “file.” A well-designed pro¬
gram can examine a freshly formatted
disk and find “files” that are probably
subdirectories. The Mace Utilities pack¬
age is designed to do just that.
Mace Utilities consist of one pro¬
gram (RXBAK.EXE) that is to be exe¬
cuted periodically and another series of
programs that are driven from a menu
system. RXBAK takes a snapshot of the
hard disk’s DOS partition boot sector,
the FATs, and the root directory. This
snapshot is copied into a special file
that is stored at the logical end of the
DOS partition. If a hard disk is acciden¬
tally formatted, Mace can copy this file
The Advanced Programmer's Editor
That Doesn't Waste Your Time
• Fast, EMACS-style commands—completely reconfigurable
• Run other programs without stopping Epsilon—concurrently!
• C Language support—fix errors while your compiler runs
• Powerful extension language • Great on-line help system
• Multiple windows, files • Regular Expression search
• Unlimited file size, line length • Supports large displays
• 30 day money-back guarantee • Not copy protected
Software Ltd
5740 Darlington Road
Pittsburgh, PA 15217
for IBM PC/XT/AT's or compatibles
CIRCLE NO. 125 ON READER SERVICE CARD
back into the respective sectors from
which it was created, thus restoring the
directory to the state it was in the last
time RXBAK was run. In most cases, this
will allow the reclamation of some, if
not all, of the lost data.
Because RXBAK takes only a few
seconds to run, a call to it can be
placed within any frequently used batch
file. It can preserve many hours of work
by safeguarding critical data structures.
Note that these file recovery methods
are only salvage operations, and be¬
cause of that, the restored disk should
be formatted once again after the recov¬
ered files have been safely transferred
to another device.
Even if it is not installed on the
hard disk, Mace can be run from the
diskette to recover data lost due to an
accidental FORMAT. Mace is not able to
recover any files that were in the root
directory. They probably still do exist;
however, all pointers have been lost as
a result of the clearing of the directory
and FAT. Although Mace does not know
where DOS placed subdirectory files, it
does know in general what they look
like. Mace searches the entire disk look¬
ing for possible subdirectory candi¬
dates. Once subdirectories are located,
all files and subdirectories can be par¬
tially, if not fully, recovered. Restored
first-level subdirectories will appear in
the reconstructed root directory as
SUB1, SUB2, SUB3, etc. Inside each
SUBrc, lost files can be found.
Mace Utilities contain several other
useful functions for both diskettes and
hard disks; these include the usual file
undelete function and the more ambi¬
tious diagnose, remedy, squeeze/sort
directories, and condense functions.
Diagnose attempts to read every sector
of a disk looking for errors. If it finds a
sector that it cannot read correctly and
that has not been previously marked as
bad (in the FAT), it issues a message
advising that this file should be at¬
tended to at once. Diagnose does not
repair the disk; the remedy function is
designed for that purpose.
Remedy is similar to diagnose, ex¬
cept that unreadable files are made
readable with a minimal loss of data. If
an unreadable sector is found within a
cluster that is not allocated, it is locked
out (in the FAT). If, however, an un¬
readable sector is part of some file, all
readable sectors within a cluster are re¬
constructed and copied to another free
cluster. The unreadable sector is filled
with asterisks (*), and the FAT chain is
relinked. Finally, the cluster containing
the bad sector is locked out. If the file
172
PC TECH JOURNAL
that contains the bad sector is a .BAT, a
.COM, or a .EXE file, an error message
is issued to the effect that this program
probably will no longer execute prop¬
erly and should be replaced. It should
be noted that the actions taken by
remedy are permanent; therefore, it
normally is run only after diagnose has
been used to gather information about
the damaged files.
Squeeze/sort directories sorts the
entries within a directory on one of the
four fields (name, extension, date/time,
or size) and moves all active directory
entries to the top of the directory. This
allows DOS to search through directo¬
ries without the time-consuming pro¬
cess of reading and analyzing entries
for nonactive (deleted) files.
As an option, squeeze/sort can set
a flag within directory entries of .BAT,
.COM, and .EXE files to “read only.”
This prevents them from being deleted
(this effect can be reversed with the
DOS command ATTRIB) and also en¬
hances the performance of subsequent
runs of the condense option.
Condense performs all of the diag¬
nostic and repair operations described
above, and then rearranges the files
into a linear space. When it is finished,
the files are contiguous (with the ex¬
ception of bad sectors) and packed
from the front of the disk. The order of
packing is directories, read-only files,
and then all other files. Directories are
now close to the root, which means the
seek time will be minimized. Most ex¬
ecutable files are never operated on;
they are merely read. Condense then
packs all of the read-only files to the
front of the disk, where they are close
to the subdirectories and in one contig¬
uous segment. This implies that they
can be accessed rapidly.
The utilities Vcache, Vkette, and
Vscreen have been added to version 4.0
of Mace. These programs are designed
to speed up hard disk and diskette
transfers and output to video displays.
The documentation with Mace Util¬
ities is adequate, and in some cases it
provides more information than users
will want. On-line help is available; esti¬
mated runtimes as well as function
descriptions are provided.
For $99, users can invest in a fairly
comprehensive insurance policy for re¬
covering lost files. Mace Utilities may
not be able to recover all of the infor¬
mation, but the product is able to sal¬
vage a great deal of lost data, and that is
a worthwhile dividend.
—GUY QUEDENS
BASTOC
JMI Software Consultants, Inc.
904 Sheble Lane
P.O. Box 481
Spring Home, PA 19477
215/628-0840
PRICE: $495
CIRCLE 354 ON READER SERVICE CARD
A s production-quality C compilers
have become available in the last
few years, many programmers saddled
with maintaining large BASIC systems
have developed a keen interest in
migrating software as painlessly as pos¬
sible to C, while rewriting a minimum
of code. This conversion need is
Only Now.
and Count
IA Analog, Digital
ita...FAST!
Solve Problems
Others Can’t N**
Now, your PC-based data acquisition and control systems
can capture, analyze, and react to real-world events... in
real time. Our new DMA plug-in carrier boards can help
you create powerful, IBM-compatible PC systems...
economically.
• Modular magic. Configure a few points, or sophisticated
systems up to hundreds of channels.
• Pre- and post-event capture and foreground/background
• High-speed software in BASIC, C, Turbo Pascal, and
ASYST.
Call or write for complete information and applications
assistance. Burr-Brown Corp., P.O. Box 11400, Tucson, AZ
85734. 602-746-1111.
High Performance
PC Data Acquisition Systems
mi
I INTRODUCES
with 2 MBYTES
only $ 295 *
The Only Expanded Memory Card
Which Can Save A Day Each Week.
A major independent testing laboratory benchmarked a
PC-XT equipped with FASTCARD and demonstrated a tenfold
improvement over a PC-AT on typical Disk I/O operations.
• Portable between IBM PC, XT,
AT and compatibles.
• Up to 2MB with Split Memory
Mapping to
- Fill memory to 640K
- Provide Expanded
memory over 640K
• Unique Disk Caching
• Ram Disks (up to 8MB)
• Custom Password Security
• Print Buffering
• Built-in Diagnosis and
Automatic Fault Tolerance
• Factory Installed
and Tested DRAM’s
• Lotus/Intel/Microsoft compatible
'Each FASTCARD III comes with 2 MBytes of Memory.
FASTCARD IV, available with 2 MBytes, includes serial/parallel ports,
game port and a clock calendar for $295. Dealer inquiries invited.
For additional information, contact
van
at
PERIPHERAL MARKETING INC. 602 - 483-7983
7825 E. EVANS RD., #500, SCOTTSDALE, AZ 85260
CIRCLE NO. 117 ON READER SERVICE CARD
CIRCLE NO. 202 ON READER SERVICE CARD
PRODUCT WATCH
The new
F286 PC-AT
compatible
board-level CPU
from I-Bus gives you a
whole new dimension of
speed and freedom in PC or
PC-AT bus system design.
It’s all on a PC add-on-sized board—for use with a
passive backplane just like other board-level systems.
You just add the expansion cards, put it in a box (I-Bus
has loads of backplanes and boxes), and it’s ready to
execute any PC-AT applications software.
Use the F286 in a disk-based or diskless system,
with or without a keyboard, with or without a display.
It’s packed with features such as 10 MHz zero wait
state operation. Separately clocked 80287 support
(runs at full speed—not half speed as in other AT’s).
512K RAM. Battery-backed clock/calendar. Optional
PROMDISK to run any application from the F286’s
user EPROM.
And best of all, it’s designed, built and supported by
I-Bus—the originators of the passive backplane
PC Bus.
If you’re into systems, we speak your language.
Call us TOLL FREE at:
The Full Service PC Bus Company
5780 Chesapeake Court
San Diego, CA 92123 TLX: 910 240 0290
CIRCLE NO. 210 ON READER SERVICE CARD
The classic Sieve of Eratosthenes benchmark program was
used as a simple test of bastoc’s conversion capabilities.
The IF-THEN of the BASIC program was changed to a C goto
statement. The rest of the program is well structured.
174
PC TECH JOURNAL
addressed by bastoc, a software pack¬
age from JMI Software Consultants, Inc.
bastoc accepts a BASIC program in
source form as input and creates equiv¬
alent C source code from it. (bastoc
was originally reviewed in “BASIC to
C,” Ernest Tello, October 1984, p. 117.)
bastoc is intended as both a migra¬
tion utility (making a one-time conver¬
sion of a program from BASIC to C)
and as a production BASIC compiler
that produces a C program as its output
(for use in developing prototype or
throwaway programs). The bastoc pack¬
age consists of a translator program and
a runtime library in small and large
memory models. The library contains
support for dynamic string handling (a
feature not normally found in C),
screen control, and BASIC-style file I/O.
The module ANSI.SYS must be present
to use bastoc’s screen routines.
C source code is provided for the
runtime library, several translator func¬
tions, and data tables. The package is
shipped with four diskettes and an 8^-
by-11-inch spiral-bound manual, bastoc
is not copy protected.
Installation of the program is a
straightforward procedure that is well
documented in the manual. It consists
of copying the files on the supplied
diskettes to a single directory. Follow¬
ing installation, the directory includes
two versions of the translator program,
one that simply produces a C source
file as output and another that acts as a
complete compiler, calling the Micro¬
soft C compiler and linker directly after
source translation. Also included in the
directory are the runtime library in the
appropriate memory model and a main
program that handles intra-program
chaining and COMMON variables.
bastoc supports the BASIC.EXE
(not the advanced BASICA) version of
Microsoft BASIC for the PC. Statements
that are not supported include PEEK,
POKE, and VARPTR for large memory
models (implying that assembler lan¬
guage subroutines need manual conver¬
sion), and all of the BASICA graphics
and sound statements. The CHAIN,
COMMON, RUN, and SHELL statements
also have some restrictions. For most
business software, this should prove to
be an adequate subset of BASIC.
Notably absent from bastoc is sup¬
port of the more recent Microsoft
QuickBASIC and IBM BASIC Compiler
version 2.0 enhancements, such as sepa¬
rate subroutines and ISAM files. In its
current version (2.1c), however, bastoc
has added support for some features it
previously rejected: NEXT instead of
NEXT variable , use of % for specifying
integer variables, and READ...DATA
The bastoc options control code
optimization (including detecting and
deleting unreachable code), default
variable types, program organization,
and subroutine handling (GOSUBs can
be left in-line in a single, monolithic
function or isolated into separate C
functions). An new option in version
2.1c optimizes expressions by using C’s
increment and decrement operators
wherever possible. Wild card file pro¬
cessing is not available.
The code translated by bastoc for
the BASIC version of the Sieve of Era¬
tosthenes (see “The State of C Interpret¬
ers,” Marty Franz, May 1986, p. 153 and
“Reconsidering BASIC,” Marty Franz,
December 1986, p. 142) is shown in fig¬
ure 2, with the original BASIC version
in figure 1. A C goto statement and
matching label have been added where
the GOTO existed in the original pro¬
gram. The TIME_ function may need to
be rewritten for some compilers. In
general, the resulting C program is
well-structured and fairly portable.
Within the above framework, oper¬
ation of bastoc is straightforward and
produces no surprises when the Micro¬
soft C compiler and linker are used.
Other compilers may require modifica¬
tion to the runtime library. Most of the
library functions are available in source
form and are adequately documented
by JMI; a knowledge of C is required to
make the modifications. The more un¬
structured the BASIC source code is,
the more unstructured the C output
will be, especially when GOTOs and
GOSUBs are used carelessly. A disci¬
plined BASIC coding style is the way to
ensure that the G code generated by
bastoc can be maintained.
An important feature of the bastoc
package is the translator, which can be
modified and rebuilt to handle addi¬
tional functions and statement types.
This gives it the potential for translating
other BASICS, such as QuickBASIC, into
C. Hooks have been provided into the
translator’s key-word tables and recog¬
nition routines to allow user-written
functions to be added, but this has not
been well-documented in the manual
and must be considered a technical
challenge to even an experienced C
programmer. Nonetheless, it should
prove easier to extend bastoc than to
write a comparable translator from
scratch, bastoc is a competent program¬
ming tool for programmers converting
large BASIC systems to C. liiam^l
—MARTY FRANZ
MARCH 1987
SQL Compatible Query System adaptable to any
operating environment.
CQL Query System. A subset of the Structured
English Query Language (SEQUEL, or SQL)
developed by IBM. Linked files, stored views,
and nested queries result in a complete query
capability. File system interaction isolated in an
interface module. Extensive documentation
guides user development of interfaces to other
record oriented file handlers.
Portable Application Support System
Portable Windowing System. Hardware
independent windowing system with borders,
attributes, horizontal and vertical scrolling.
User can construct interface file for any
hardware. Interfaces provided for PC/XT/AT
(screen memory interface and BIOS only
interface), MS-DOS generic (using ANSI.SYS),
Xenix (both with and without using the curses
interface), and C-library (no attributes).
Screen I/O, Report and Form Generation
Systems. Field level interface between
application programs, the Query System, and
the file system. Complete input/output
formatting and control, automatic scrolling on
screens and automatic pagination on forms,
process intervention points. Seven field types:
8-bit unsigned binary, 16 bit signed binary, 16
bit unsigned binary, 32 bit signed binary,
monetary (based on 32 bit binary), string, .and
date.
Including Source Code
$395.00
File System interfaces include
C-tree and BTRIEVE.
HARDWARE AND FILE SYSTEM
INDEPENDENT
JRTZBERG
Gomputer Systems
41-19 BELL BLVD.
BAYSIDE, N.Y. 11361
VISA/Master Charge accepted
(718)229-4540
*C-tree is a trademark of FairCom
IBM. SEQUEL, PC, XT, AT are trademarks of IBM Corp.
MS-DOS and Xenix are trademarks of Microsoft Corp.
CQL and the CQL Logo are trademarks of Kurtzberg Computer
Systems.
CIRCLE NO. 148 ON READER SERVICE CARD
175
LAN REPORT 5
A Hard Look at LAN Choices.
Novell's LAN Report Package makes choices easier.
The flexibility of local area net¬
works allows users to assemble
LANs using network components
that best suit the needs of the instal¬
lation. But choosing those compo¬
nents can be a confusing process.
Novell, Inc., has published
two reports designed to
make the process easier:
the LAN Operating System
Report 1986 and the LAN
Evaluation Report 1986.
These reports help users
evaluate network compo¬
nents and make informed
decisions when choosing
the components that meet
their needs. Hardware and
software issues are sepa¬
rately evaluated in the two
reports, and extensive
performance benchmarks
are included.
Choosing a network
operating system, or LAN software,
isthe most critical aspect of design¬
ing a network. Simply,the betterthe
operating system, the better the
network. The LAN Operating
System Reportc ontains an in-depth
analysis of LAN software, begin¬
ning with an examination of LAN
software standards such as
MS-DOS 3.1 and NETBIOS, and the
file server environment. Issues like
internetworking, system reliability,
security and performance are
addressed as well.
The LAN Operating System Report
also evaluates Novell Advanced
NetWare, the IBM PC Network
Program and 3Com 3 +. The report
shows users how the design and
implementation of these products
translates into real performance.
Hardware Options.
The LAN Evaluation Report 1986
focuses on evaluating network
hardware. It examines hardware
issues that affect LAN performance,
including an analysis and bench¬
marking of major LAN products.
"Hardware and
software issues are
separately evaluated
in the
two reports.. "
A key element of the study is the
NetWare Evaluation System. The
system provides a mechanism for
matching site needs to specific
hardware. Whether a new network
is being planned or an existing site
is being upgraded, the study is
useful in the performance evalua¬
tion of any network.
System planning starts with the net¬
work interface card (NIC) and cabling.
NICs analyzed in the study are:
• AT&T StarLAN
• Corvus Omninet
• Davong Multi Link
• Gateway G-Net
• IBM PC Network
• IBM Token Ring
• Interactive Systems Vista LAN/PC
• Nestar PLAN 2000
• Novell S-Net
• Proteon ProNET
• Standard Microsystems ARCNET
• 3Com EtherLink
• 3Com EtherLink +
The report analyzes each NIC
according to its access scheme,
raw bit rate, on-board processor
and NIC-to-host transfer method.
Another important compo¬
nent of the LAN is the
network server. In examin¬
ing network servers, the
LAN Evaluation Report
looks at several perfor¬
mance indicators. Proces¬
sor type isthe most obvious
feature to differentiate
servers. However, other
factors important in deter¬
mining server performance
are also evaluated, includ¬
ing processor clock cycle
speed, wait states, server
memory cycle speed, mem¬
ory channel and transfer
bus channel. And the report
examines the effect of
disk channel speed on
network performance.
In addition to providing a careful
examination of LAN hardware, the
LAN Evaluation Report features an
evaluation formula. Using the
formula, a LAN's estimated future
site activity is measured and
matched to the appropriate LAN
hardware.
To Get the Reports.
The LAN Operating System Report
1986and the LAN Evaluation Report
1986 are available free of charge
from Novell. To obtain a copy of
the Novell Report Package, call
or write Novell Corporate
Communications, 122 East
1700 South, Provo, Utah 84601,
(801) 379-5900.
1NOVELL
Software Choices.
-S TTrljSSHHI
; VW ^
CIRCLE NO. 109 ON READER SERVICE CARD
EXPERT CONSULTANT: APPLIED AI
RICHARD L. SCHWARTZ and ROBERT E. SHOSTAK
What Computers Cannot Do
Certain mathematical problems simply cannot be solved by computer,
no matter how big the program or how much time is available.
'V't- ...
L £*■» Me M
. I (») -
f 7* ^ J
o * <f“ X" * r # t/
; >413 ^s:
‘ ' * ' \
A rtificial intelligence is usually de¬
fined as a set of techniques for pro¬
gramming computers in a way that
confers some of the attributes of human
intelligence. The degree to which this
endeavor will be successful is, of
course, an open question. In principle,
there is no reason why computers can¬
not be made as intelligent or more in¬
telligent than humans—indeed, the
human brain appears to be nothing
more than a massively parallel personal
computer based on some inexpensive
organic logic. A much more interesting
theoretical question is not whether
computers can do what people do, but
rather what is it that computers can
compute, human or otherwise.
Ironically, the question of what
types of problems can be solved purely
through mechanical means was first
posed long before the modern com¬
puter even came into existence. A great
deal of attention was given to this issue
in the 1920s and 1930s by a group
headed by the well-known mathemati¬
cian David Hilbert. While Hilbert and
his colleagues had never heard of
FORTRAN, they nevertheless understood
the concept of a program, or algorithm.
Their dream was to mechanize all of
mathematics so that a single algorithm
could solve any problem that could be
stated in a mathematical way.
Hilbert and his associates made a
certain degree of progress in the early
1930s by devising general algorithms
that could solve certain classes of prob¬
lems in mathematical logic. These early
results were quite encouraging, and for
a while it looked as if the livelihoods of
unborn generations of computer pro-'
grammers might be in jeopardy.
In 1936, however, hopes for imple¬
menting Hilbert’s grand scheme were
abruptly dashed by the logicians Alonzo
Church and Alan Turing. Using different
approaches, they proved that the so-
called universal algorithm cannot exist.
In fact, a consequence of what they
demonstrated is even more remarkable:
certain classes of problems in mathe¬
matics simply cannot be solved with
computer programs, no matter how big
the program or how much computer
time is available.
Their arguments rest on a certain
assumption that has come to be known
as Church's Thesis , which, in essence,
postulates that the instruction set of a
very simple hypothetical computer
known as the Turing Machine is power¬
ful enough to use in coding any algo¬
rithm that could ever be programmed
on any computer, existing or future.
The Turing Machine consists of a
tape transport with an infinite tape, a
read/write head, and a finite-state con¬
troller. The tape is divided into individ¬
ual cells, each of which can store one
bit of information. The read/write head
scans a single cell of the tape at a time.
The transport has the ability to move
the tape one cell to the left or right
upon the command of the controller. As
might be expected, the controller is, at
any given time, in one of a certain num¬
ber of states. One of these is designated
as the Start state; another is known as
the Halt state.
The operation of the machine is
quite simple. At each step, the read/
write head reads the currently scanned
cell of the tape. On the basis of the cur¬
rent state and on what is read, the con¬
troller either writes a bit to the tape or
moves the head left or right one cell. In
either case, it transits to another (possi¬
bly the same) state. Execution begins in
the Start state and terminates in the Halt
state. The input to the machine is en¬
coded as the initial configuration of the
tape; the output is given by what re¬
mains on the tape when the machine
enters the Halt state.
The operation of the controller can
be summarized by a table (think of it
as a program) that lists the state and
head transitions. Figure 1, for example,
shows a Turing Machine program that
takes a positive integer as input, and
multiplies it by two. An integer x is en¬
coded on the tape as a sequence of
x + 1 Is, with Os everywhere else. As
shown in the figure, the states of the
machine are designated q 0 through q 8 ,
with q 0 as the Start state and q 8 as the
Halt state. Each entry in the table is a
quadruple specifying the current state,
the value of the currently scanned cell,
a write or move action, and the next
state that is to be entered. For example,
the quadruple q 4 0Rq 5 specifies that if
the machine is currently in state q 4 and
scans a 0, it should move one cell to
the right and enter state q 5 .
As an exercise, the operation of the
machine can be simulated for an input
MARCH 1987
177
ILLUSTRATION • MACIEK ALBRECHT
We’ve seen a lot of
Pascals, but this one takes
the blue ribbon. Produces
code smaller and faster
than optimized C
compilers. ISO-
compatible. Supports the
8087 in-line (8087 code
emulation option if you
don’t have the chip). True
relocatable linker allows
access to the Microsoft
family of languages and
assemblers. Four memory
models. Overlays.
Variable-length strings.
Structured constants and
structured function values.
Separate compilation of
modules. Procedural
parameters. Powerful
compile options
(optimization by-pass for
quicker compiles, syntax
evaluator, I/O “fine
tuning”, etc.). Turbo
Pascal Translator brings
your present Borland
programs over to a
ISO/Marshal-readable
format. Watch the
difference it’ll make in
your software’s code size
and speed!
Suggested retail is $189.00.
Our price is $159.00.
FREE OFFER! ABC
WRITER, a powerful
WordStar clone with full
Print/Merge capabilities
FREE with each copy of
Marshal Pascal! Only
while supply lasts.
Call (415) 930-9848-Ask
for our free catalog of
other software.
INNOVATION
COMPUTERS
223 Donegal Way
Martinez, CA 94523
Turbo Pascal is a trademark of Borland
International.
WordStar is a trademark of MicroPro Inc.
Microsoft is a trademark of Microsoft
Corporation.
EXPERT CONSULTANT: APPLIED AI
1? WRITE 0
1 ? MOVE LEFT
1 ? MOVE LEFT
1? MOVE LEFT
1? MOVE RIGHT
1 ? MOVE RIGHT
1? MOVE RIGHT
0? WRITE 1
0? MOVE RIGHT
FIGURE 1: Turing Machine Program
q 0
10
q»
qi
OR
q 2
q 2
10
q 3
q 5
OR
q 4
q.
1R
q 4
q 4
OR
qs
qs
1R
qs
q5
01
q 6
q 6
1R
q 6
q 6
01
q 7
q 7
1L
q-
q-
0L
q«
q«
1L
q.
q s
1L
qi
0? HALT
0? MOVE LEFT
0? WRITE 1
0? MOVE RIGHT
1? WRITE 0
0? MOVE RIGHT
Each entry is a quadruple specifying the current state, the value of the currently
scanned cell, a write or move action, and the next state to enter.
of 2 (input tape ...OHIO...). Assume that
the read/write head is initially posi¬
tioned at the first 1. The quadruples can
be grouped into subroutines for per¬
forming actions, such as erasing an in¬
put digit or adding new output digits.
_ With a little effort, a Turing Ma¬
chine program can be written to mul¬
tiply two numbers. More remarkably,
and with quite a bit of effort, a Turing
Machine can be programmed to emu¬
late the operation of a Cray super¬
computer. In fact, because a Turing Ma¬
chine has an infinite tape, while the
Cray’s secondary storage is finite (at
least, as it comes from the factory), the
argument could be made that the
Turing Machine is actually more power¬
ful than a Cray. The important point,
however, is that even if the Cray had an
infinite secondary storage, it could not
compute anything that could not be
computed, given enough patience, us¬
ing a simple Turing Machine.
Church’s Thesis actually goes one
step further. It says, in effect, that no
matter what new hardware technology
comes along, we will never be able to
compute what we cannot compute now,
given enough disk space and patience.
Of course, this thesis is only a conjec¬
ture—it cannot be proved, and, in fact,
it cannot even be stated in a precise,
mathematical way. Still, it seems quite
plausible, and at least so far, it has
stood the test of time.
What Turing showed specifically
was that it is not possible to come up
with an algorithm that solves the so-
called halting problem —determining
whether a given computer program ter¬
minates (as opposed to looping for¬
ever) on all inputs. Imagine writing an
assembly language program on the PC
that reads a file containing an arbitrary
Pascal procedure and determines if
there is some input for which that pro¬
cedure just loops forever without termi¬
nating. In fact, no such 8086 program
exists—none could be written even if it
could be arbitrarily large (but finite)
and could take advantage of an infinite
amount of disk space.
Of course, Turing had never heard
of an 8086 or Pascal. He phrased the
halting problem in terms of Turing Ma¬
chines. How did Turing prove that the
halting problem could not be solved?
The answer is by using a clever tech¬
nique known as diagonalizatio? 2 .
CIRCLE NO. 135 ON READER SERVICE CARD
178
PC TECH JOURNAL
Clarify your source code
C, BASIC, Pascal, dBASE, Modula-2 programmers: be more productive
with two new utilities from Aldebaran Laboratories
“Occasionally, a utility
comes along that makes a
programmer’s life much
easier. SOURCE PRINT
is such a program.
It contributes to the
programmer’s job by
organizing code into a
legible format and by
helping to organize the
documentation and
debugging process.”
-— PC Magazine
Sept. 16,1986
Source Print and Tree Dia-
grammer both have easy-to-use
menus with point-and-shoot file
selection, and let you search for
files containing a given string.
For IBM PC and compatibles
with 256K.
Join thousands of program¬
mers who are working more
efficiently using Source Print
and Tree Diagrammed Order
these indispensable tools today.
We ship immediately, and
there’s no risk with our 60-day
money-back guarantee. Order
both and save. Only $115.00.
800-257-5773 Dept. 33
In California:
800-257-5774 Dept. 33
MasterCard, VISA, American
Express, COD. Add $5 for shipping.
Source Print and 'free Diagrammer are
trademarks of Aldebaran Labs. dBASE is
a trademark of Ashton Tate.
150 —FOB INDX = 1 TO 100
160 IF TB(INDX) s 0 1
170 C = 50
C NBILK K <= 1000
TB(K) = 0
K * K ♦ X
DSHD
160 OOSOB 2000
190 XT(C) = X
T2(C) : K
C = C ♦ 1
200 —NKXT INDX
$ 75 '
Source Print™ j-—
. , . ■ 160 IF TB(INDX) = 0 THEN X = 5
organizes your source code, simpli- ■ Solo! 0 *,™ 11 * K <s 1000 re<K> = o: K -* ♦ x:
fies debugging, and makes documen- I 200 NEXT 5 INDX T ^< C) - K- C . C ♦ 1
. 4 . ■■'Mr. 1 . . ■ ^ 150 |— FOR INDX = 1 TO 100
tation a snap! It lists one or more 1 g " = T f< lNDX > - 0 rm x - 5
source files with informative page ["'H:'! 00
headings and op- I ieo Sosm 2000
tional line numbers, J 1 .««•(> ■ ™ c >: ;
urkllo nffoTinn I 3 while (lar < nrea 44 aroa(lar][0] == c) | 200 l(En ' lW * BASIC
i, r , I s r««D = s.
invaluable features. I ? I - p* *<«ren[ior)m>; After
The Index I j ,d = ’ p) ,---
(Cross-Reference I |) [ur"* | w g l 1 S;g£ 22! ° 3 INDEX (Cro8B Rel
list) saves you time | || [Ur'' ^ I m™,* u.u*
by showing exactly I
where variables are . I **• g-gjj g-g;®
used and where functions, pro- C^^OO I 54,2354 54:2364 54,2365
cedures, and routines are called. H*/ V I intext «»&•' <BS. 43 * 1796
Locations where new mammmmmmmammam
»»;«»;« values may be assigned to
public v.ji, v ,n variables are shown, making it easy to track down that
gas^ij;i # asii-o./.i/M-, mysterious value change.
Jr* 7 " d * 1 " * Structure Outlining solves the problem of hard-to-
see nested control structures by automatically drawing
lines around them.
glrLv" Automatic Indentation of source code and listings
L™? 1 ”’”" 1 " reduces your editing time and ensures indentation accuracy.
[7JijVv::j u : Plus... Source Print generates a table of contents
e sir?SH'jS“ listing functions and procedures. Keywords can be printed
Zp7 in boldface oil most printers. Multi-statement BASIC lines
71iS«r dBASE can s P^ t for readability. Functions and procedures can
be drawn by name from one or more source files to form a
new file.
Tree Diagrammer™ j *** v £*2 ~ :
shows your program’s overall organization at a I T ■ - ■ 5ALts c ,0 1
glance. Ordinary program listings merely display ZZZZ __
functions, procedures, and subroutines sequen- ‘ZZ'L ”
tially, but do not identify the relationships be- UiZZZ
tween these routines. Our revolutionary new s^.r - „«,
Tree Diagrammer automatically creates an L --- - ■ ,M “ ,C ,0
“organization chart” of your program showing the ZZZZ c
hierarchy of calls to functions, procedures, and ” -
subroutines. Recursive calls are indicated and V
designated comments in the source code —-SH-
will appear on the chart. L. c . n ,
Tree Diagrammer helps you organize your tkj™... SALIS - C 11 |
program more logically. And you’ll be amazed at B
how easy it is to debug when you Pi K 00
see how your routines interact. 30Q
L UU UU1UUOV
$ 55 '
Aldebaran Laboratories 3339 Vincent Rd. Pleasant Hill, CA 94523 415-930-8966
YES! Rush Die □ Source Print @ $75_ □ free Diagrammer @ $55_
□ Both $115. Ship/Handling $5. For CA add 6% tax_Total_
Name-:--
Company-
Address_
City_State_Zip___
□ Check enclosed □ VISA □ MasterCard □ American Express
Card #_Exp. Date_
Signature-Phone#- : -3C
CIRCLE NO. 106 ON READER SERVICE CARD
AMX
Task Scheduler
AMX Service
Procedures
User
Tasks
Interrupts
User Device
Service
Procedures
AMX Interrupt
Supervisor
the dBx ,M translator
dBx produces quality C direct
from dBASE II or III programs.
Move dBASE programs to UNIX or other machines.
Improve program speed and reliability
Support multi-user/network applications.
With power guidebook of conversion hints.
Includes full screen handler and uses your
current C database manager.
May be used to move existing programs or help
dBASE programmers learn C easily
For MSDOS, PCDOS, UNIX, XENIX, Macintosh, AMIGA.
(Uses ANSI.SYS driver on MSDOS, CURSES under UNIX)
Priced from $350, also available from distributors.
dBx is a trademark of
Desktop Ai
1720 Post Road E., Westport, CT 06880 MCIMAIL • DESKTOPAI
Phone • 203*255*3400 Telex • 6502972226MCI
CIRCLE NO. 214 ON READER SERVICE CARD
386
Pascal
for MS-DOS
MetaWare Incorporated announces the first
available C and Pascal compilers that generate
protected-mode 80386 code
for running on any 80386 machine that runs MS-DOS (e.g., the
Compaq Deskpro 386). The compilers are functionally identical to
the well-respected 8086/286 MS-DOS High C™ and Professional
Pascal™ compilers that have received outstanding reviews in such
magazines as Computer Language, Dr. Dobb’s, and PC Tech Jour¬
nal. Our compilers are currently used by industry leaders such as
AshtonTate, AutoDesk, ANSA, and Lifetree. Now you can get them
generating 80386 code.
If you have an application that requires the large 32-bit address
space and the full 32-bit registers of the 80386, expand your mar¬
ketplace to the rapidly growing supply of 80386 MS-DOS machines.
Contact MetaWare for your 80386 software solution today!
(408) 429-6382, telex 493-0879.
Durable Software Constructed Automatically m
Hals
INCORPORATED
UJars
903 Pacific Avenue, Suite 201 • Santa Cruz, CA 95060-4429
•98E«98£*98£«98E»98E»98E»98£*98£*98£»98£*98E*98E«98E»98£*98E«98£
CIRCLE NO. 259 ON READER SERVICE CARD
Real-Time Multitasking Executive
■ No royalties
■ Source code included
■ Fault free operation
■ Ideal for process control
■ Timing control provided
■ Low interrupt overhead
■ Inter-task messages
Options:
■ Resource Manager
■ Buffer Manager
■ Integer Math Library
■ Language Interfaces:
C Pascal
PL/M Fortran
■ DOS File Access :
CP/M-80
IBM PC DOS
AMX isTM of KADAK Products Ltd
CP/M-80 is TM of Digital Research Corp.
IBM. PC DOS areTM of IBM Corp
AMX for 8080
8086
6809
68000
$ 800 US
950
950
1600
Manual (specify processor) 75
KADAK Products Ltd. | 604 ) ^4-2796
Telex: 04-55670
206-1847 W. Broadway, Vancouver, B.C., Canada V6J1Y5
CIRCLE NO. 258 ON READER SERVICE CARD
SOFTWARE SENTINEL
fWs Stop unauthorized use of software...and keep your cus-
^ tomers happy at the same time. The no-interference hardware
keys from the industry's leading supplier put money in your pocket and
save you from angry customer complaints. Our product line includes
devices for either parallel or serial port. The latest addition allows you to
cover multiple programs with one device and/or customize
as needed. Call for new low prices.
SOFTWARE DEVELOPER BENEFITS
»Prohibits unauthorized use
of software
• No need for copy
protection
• Algorithm technique
(never a fixed response)
• Virtually unbreakable
• Higher level language
interfaces included
• 100 times faster (1ms)
than fixed response devices
• Minimal implementation effort
• Runs under DOS and Xenix, on
IBM PC, AT, XT & compatibles
SOFTWARE USER BENEFITS
»Unlimited backup copies • Pocketsize
»No floppy required with • Transparent
hard disk • Transportable
EVALUATION KIT AVAILABLE
17971 SKYPARK CIRCLE SUITE E, IRVINE, CA 92714
(714)261-0228
CIRCLE NO. 157 ON READER SERVICE CARD
180
PC TECH JOURNAL
386«386*386*386»386*386*386*386»386*386«386*386*386*386*386*386*386*386*386*386*386*386*386*386'
EXPERT CONSULTANT: APPLIED AI
Assuming that its Goedel number is 137, KILLER calls HALTTEST with 137 as an
argument. If the call to HALTTEST leaves a 1, KILLER loops forever.
Here is the essence of the argu¬
ment. First, in principle, all possible
Turing Machine programs can be enu¬
merated and assigned an integer. Natu¬
rally, an infinite number of such pro¬
grams exists, but, nevertheless, no more
than the number of available integers.
Such an enumeration of all possible
programs is called a Goedel numbering .
Goedel numbering is the theoretician’s
version of the story about the comedi¬
ans who tell the same jokes over and
over so often that they simply assign
each joke a number. (Someone calls
out 45, and only one comedian
laughs—he had not heard it before.)
Suppose that a Turing Machine
program could solve the halting prob¬
lem. This program (call it HALTTEST)
could take as its input the Goedel num¬
ber of an arbitrary Turing Machine pro¬
gram and determine whether or not
that program halts on all inputs. If so, it
would leave a 1 on the tape; if not, it
would leave a 0.
Next, consider a powerful and
easy-to-use program named KILLER that
calls HALTTEST as a subroutine, as
shown in figure 2. (To be completely
rigorous, KILLER should be specified as
a set of quadruples; the flowchart
shown in the figure is an abbreviation.)
Assuming that its Goedel number is
137, KILLER ignores its input and just
calls HALTTEST with 137 as an argu¬
ment. If the call to HALTTEST leaves a
1, KILLER loops forever; otherwise it
quits, leaving a 0 on the tape.
Either way, a contradiction is ap¬
parent. Because HALTTEST halts on
all inputs, KILLER hangs if and only if
HALTTEST(137) leaves a 1 on the
tape. But by definition of HALTTEST,
HALTTEST(137) leaves a 1 on the tape
if and only if KILLER never hangs. The
conclusion, therefore, is that such a
HALTTEST program cannot exist. This
argument works just as well for 8086s
as it does for Turing Machines. Because
8086s are so complicated to describe,
PROTECT
YOUR COPIES
OF
HEMHl
OURNA
Make your collection of PC TECH
JOURNAL a handsome addition
to your office or home—and pro¬
tect and organize them for easy
reference!
PC Tech Journal Magazine
Binders and cases are made of
durable luxury-look leatherette
over quality binder board. Custom
designed for PC TECH JOURNAL,
every order receives FREE transfer
foil to mark dates and volume
numbers.
FOR FAST SERVICE CALL
TOLL-FREE 1-800-972-5858
MAGAZINE BINDERS
Hold your
issues on
individual
snap-on
rods. $8.95
each; 3 for
$25.75; 6 for $48.75.
OPEN BACK
CASES
Store your copies for
individual reference. $795
each; 3 for $22.95; 6 for $43.95
TEH
P.O. Box 5120
OURNAL. Philadelphia, PA 19141
Please send □ Binders □ Cases Quantity_
Payment enclosed $_* Add $1 per order for
postage & handling. (Outside USA, add $2.50 per unit
ordered, US currency only.)
Charge my:
□ Amex □ Visa □ MC (Minimum order $10.)
Card No._
_Exp. Date_
Mr./Mrs./Ms._
Address_
please print full name
City_
State_
*PA residents add 6% sales tax.
-Zip-
MARCH 1987
181
THE SOURCE
FOR All IBM
PC EXPERTS.
There's one place to
find the information
about the sophisti¬
cated applications
and products you need
at your work place.
PC TECH JOURNAL
It's the magazine
that brings you the in-
depth coverage
about the products
and issues you have
to know more about
13 times a year!
Guarantee delivery
of the technical infor¬
mation and insights
the systems experts of
PC TECH JOURNAL
deliver issue after
issue and save 50 %!
imiril P.O.Box 2996
JOURNAL Boulder, CO 80322
YES Send me PC TECH JOURNAL for:
□ One year (13 issues) only
$26.70.
□ Two years for only $53.35.
SAVE 50%!
Savings based on annual single-copy price
of $53.35.
Mr./Mrs./Ms-
Company_
Address_
City.
.State.
.Zip.
□ Bill me □ Payment enclosed
Add $6 per year for postage outside USA,
US currency only. Please allow up to 60
days for delivery of first issue.
Annual basic subscription price is $34.97.
For faster service call Toll-Free
1-800-852-5200 today!
Your subscription includes the Special
PC TECH JOURNAL Directory published
in November! 4Z643
EXPERT CONSULTANT: APPLIED AI
FIGURE 3: Domino Example and Solution
To solve this set of dominoes, a pattern is generated (inside blue square) whose
left and right edges have the same color sequences, as do the top and bottom.
however, it is easier to give a rigorous
formulation for Turing Machines.
The halting problem is the proto¬
typical instance of certain problems in
theoretical computer science known as
decision problems. An infinite class of
yes-no questions is said to be decidable
if and only if a computer program can
be written that is guaranteed to answer
each question in the class.
The undecidability of the halting
problem has implications for fundamen¬
tal questions in mathematics and logic.
For example, the principle underlying
this result is the basis of the well-
known Goedel’s Incompleteness Theo¬
rem, which states that certain mathemat¬
ical truths simply cannot be proved.
The consequences are not merely of
theoretical interest, however. Believe it
or not, the inability to solve the halting
problem imposes limits on how well
compilers can optimize compiled code.
More generally, it limits the ability to
write programs that can analyze other
programs. It implies, for example, that
programmers can never hope to write a
single, general-purpose program that
determines whether or not a piece of
code contains bugs.
SOLVABLE DOMINOES
An interesting game was devised by
Hao Wang at Bell Laboratories just for
the purpose of studying the halting
problem and other questions of decida¬
bility. Wangs game is a variation of soli¬
taire played with colored tiles he refers
to as dominoes. His dominoes are
square-shaped and are painted in such
182
PC TECH JOURNAL
No general method exists for determining whether or not a given set of dominoes
has a solution. This three-piece set may or may not be solvable.
Even without using a general method, a player can still try ad hoc approaches to
determine whether or not a particular set of dominoes can be solved.
a way that each of the four sides can be
a different color. Moreover, each square
has a definite orientation—that is, it
cannot be rotated. In this domino game,
players are given a finite set of dom¬
inoes of which they are allowed to
make as many copies as they wish. The
object of the game is to cover an infi¬
nite plane with dominoes in such a way
that adjacent edges are the same color.
If the entire plane can be covered in
this way, then the set of dominoes is
said to be solvable.
Figure 3 shows a set of three dom¬
inoes. This particular set is solvable, be¬
cause it can be used to tile the plane
using the pattern also shown in figure
3. The pattern is generated by repeating
a nine-domino unit whose left and right
edges have the same sequences of
colors, and whose top and bottom
edges also follow the same color se¬
quences. Clearly, any time a repeatable
unit of this type can be formed, a solv¬
able set is possible. (It is possible to
show, however, that some solutions to
domino problems do not consist of a
repeating block.)
Wang was able to use dominoes to
simulate Turing Machine computations
and therefore to create the equivalent
of the halting problem. Wang and his
colleagues showed that for a given
Turing Machine program, a set of dom¬
inoes can be devised that has a solution
if and only if that program hangs. His
construction starts with the table of qua¬
druples giving the program and gener¬
ates dominoes that simulate the action
of reading the tape, making state transi¬
tions, and so on. Because the halting
problem is undecidable, it follows that
no general method exists for determin¬
ing whether a given set of dominoes
has a solution.
Even without a general method,
ad hoc approaches still can be used to
determine whether or not a set of dom¬
inoes has a solution. Figures 4 and 3
present two sets of dominoes that may
or may not be solvable. Solutions or
arguments for unsolvability of these sets
will be published in our next column.
While Wang’s reduction is too com¬
plex to detail here, it should be noted
that an important step along the way
was the observation that a particular set
of dominoes can tile the entire plane if
and only if it can tile a single quadrant.
Obviously, given that a player can tile
the whole plane, he can cut out three
of the four quadrants in order to find a
solution for a quadrant. The converse is
by no means obvious, but can be estab¬
lished by noting that a tiling for a quad¬
rant necessarily contains a subtiling of
size n-by-n, for each n. An infinite tree
of these partial solutions can be con¬
structed, and an infinite path can be
found through the tree in order to yield
a solution that covers the entire plane.
Therefore, if a quadrant can be tiled, so
can the plane.
Wang’s games of dominoes were
not merely of recreational interest. He
was able to use them in order to close
what was then an open question in
mathematical logic. Specifically, he
showed that the problem of determin¬
ing the validity of members of a certain
class of logical formulas can be sim¬
ulated using dominoes. The formulas in
question have the form “There exists an
x such that for all y , there exists a z
such that...” followed by a subformula
containing no “for all” or “there exists.”
Perhaps the greatest importance of
Wang’s dominoes is that they vividly il¬
lustrate an important technique used in
many computer science disciplines and
particularly in artificial intelligence—
that is the technique of solving a prob¬
lem by reducing it to another problem
whose solution is already known. The
domino reduction actually uses a con¬
trapositive form of that technique, in
which a given problem is shown to
have no solution by reducing another
problem (the Halting problem, in this
case) that is known to be intractable to
the given problem. 1 "iTTmiin
Richard Schwartz , Ph.D., and Robert Shostak,
Ph.D., are vice presidents of software develop¬
ment and cofounders of Ansa Software.
MARCH 1987
183
AW . . .
WHAT THE HECK!
PRODESIGN II STILL ONLY $299!
FRONT ELEVRTION
1 /H" : l ‘ 0"
ProDesign II — Still $299!
ProDesign II—the Easy-to-Use CAD System. .The CAD
system that was introduced two years ago for the amazingly
low price of $299. The CAD system that has undergone four
major revisions with more than 400 enhancements. The CAD
system that still costs only $299!
How do we do it? Our accountants said to raise the price
to cover research and development costs. Our business
advisors said to charge more for the additional features. Our
competitors said it's impossible to stay in business selling a
comprehensive CAD package such as ProDesign II for only
$299.
And our customers said $299 is great. So, we said:
"Aw... What the Heck! $299 it is!"
Now, two years after its introduction, ProDesign II is one
of the world's leading CAD packages. It has features pre¬
viously found only on CAD systems costing thousands of
dollars. For the single price of $299, you get these features
and more:
• Support for more than 180 printers (including color
printers)
• Support for more than 80 plotters, with plotter optimi¬
zation.
• Easy-to-Use single keystroke commands.
• On-screen menus accessible with a mouse.
• Comprehensive drawing commands, including the finest
curve fitting in the industry.
• Editing features unsurpassed by ANY other CAD package.
• Extensive snap features, including snap to point, endpoint,
midpoint, line, circle, ellipse, arc, intersection, and perpen¬
dicular.
• True Auto Dimensioning with several formats.
• Extensive Layering features.
• Full Macro capabilities.
• Specialized drawing aids, such as tangents to circles and
ellipses, parallel lines, parallel curves, wide lines, and more.
• Complete hatching with up to 40 different patterns.
• Area and length calculation for line curves, circles, etc.
• Full Zoom, Pan, and Rotate capabilities.
• Capability to transfer drawings to and from other programs.
• Capability to Break/Trim Lines, Curves, Circles, Arcs, and
Ellipses.
• Many more features — All for only $299!
Where do you get ProDesign II? See your local computer
dealer, or contact:
American Small Business Computers, Inc.
118 South Mill Street
Pryor, OK 74361
(918) 825-4844
Telex 9102400302
Want more information? Call or write fora detailed brochure
and a free demo disk!
CIRCLE NO. 118 ON READER SERVICE CARD
BOOK REVIEWS
Approaching Modula-2
Two books attempt to complement Nicklaus Wirth’s own
work regarding his Modula-2 programming language.
Modula-2: A Seafarer’s Guide
and Shipyard Manual
Edward J. Joyce (Addison-Wesley;
Reading, MA; 1985) 270 pages;
paper, $16.30
Modula-2: A Software Develop¬
ment Approach
Gary A. Ford and Richard S. Wiener
(John Wiley* & Sons; New York, NY,
1985) 400pages;paper, $30.75
The programming language Modula-2 is
gathering a large, and ever-growing, fol¬
lowing in the computing community.
Several good PC implementations of the
language have recently appeared, mak¬
ing Modula-2 a strong contender for
use in any PC programming project
(see “Modular Developments,” John
Cockerham, this issue, p. 114). The two
books reviewed here take differing
viewpoints in their approaches to this
modular programming language.
What is needed most of all on a
Modula-2 programmers bookshelf is a
complete, accurate, easy-to-understand
reference book on this modern descen¬
dant of Pascal. Edward J. Joyce’s Mod¬
ula-2: A Seafarer's Guide and Shipyard
Manual goes only partway toward
achieving this goal. Its relaxed, conver¬
sational style provides welcome relief
from the dry, formal writing of the de¬
finitive Modula-2 text, Programming in
Modula-2 by Niklaus Wirth, the original
designer of the language. Wirth’s book,
which is filled with Backus-Naur nota¬
tion and cryptic writing, is almost too
concise to be readable.
On the other hand, A Seafarer's
Guide , while much more readable, sac¬
rifices accuracy and completeness. The
organization of the book is, indeed,
quite baffling; by chapter 2, the author
has presented several sample programs,
each of which uses features of the lan¬
guage that have not yet been explained.
For example, Joyce discusses the for¬
matted input and output available
through the Modula-2 library proce¬
dures Writelnt and Readlnt despite the
fact that these procedures are not exam¬
ined in detail until 70 pages later.
One of Modula-2’s most important
features is its ability to handle separate
compilation. It is this capability that
makes the language attractive for large,
team programming projects and for any
software development effort in which
data and procedural abstraction and in¬
formation hiding could be useful. If
Modula-2 is nothing else, it is the mod-
wlar programming /^nguage. Yet, in this
book, modules and separate compila¬
tion are glossed over until the last 30
pages of the text, where they are given,
at best, a cursory treatment. The author
places little emphasis on the features
that make Modula-2 an interesting and
unique programming language, and
chooses instead to arrange the text
around the syntax alone.
Sample Modula-2 code appears
throughout the text, but few complete
programs are listed, and those that are
complete, are simplistic. One 16-line
program is the only example that is
given in the text of Modula-2’s separate
compilation facilities.
The book does not present a cohe¬
sive picture of the standard Modula-2
function libraries for file and terminal
I/O, dynamic memory management, real
math functions, and so on. These librar¬
ies are not guaranteed to be identical
across implementations, so it is rather
important to distinguish between base
language features and features of the li¬
brary modules. This important distinc¬
tion is left unclear in the text because
base language and library features are
scattered throughout the book and are
only explained as they crop up in the
sample programs.
Joyce’s Modula-2: A Seafarer's
Guide and Shipyard Manual is an ap¬
propriate text for the programmer who
simply wishes to learn the syntax of
Modula-2 quickly and painlessly. It is
not well suited for the software devel¬
oper who is interested in understanding
the reasoning behind the design of
Modula-2, nor is it appropriate for the
programmer who is evaluating Modula-
2 as a possible implementation lan¬
guage for a software project. Its haphaz¬
ard organization, poor examples, and
lack of emphasis on the strong points of
the language make this a book that is
truly lost at sea.
Modula-2: A Software Development
Approach , by Gary A. Ford and Richard
S. Wiener, takes a completely different
tack and, as a result, offers the reader a
more complete treatment of its subject
than does Joyce’s book. A Software De¬
velopment Approach is more a text on
the methods of software engineering
than a guide to a particular program¬
ming language. Although the book is di¬
vided into two sections—the first part is
on Modula-2 as a language, and the sec¬
ond is on Modula-2 as a tool for soft¬
ware development—the emphasis of
the entire book is, as its title suggests,
on software development.
As the authors present each feature
of Modula-2, they are careful to discuss
not only its syntax, but also the reason
for including it in the language; the
reader is not left to guess the intentions
of the language designer.
Ford and Wiener present many rel¬
evant examples, and the sample pro¬
grams illustrate well both the syntax of
the language and the software develop¬
ment concepts (data and procedure ab¬
straction, information hiding, and so
on) that Modula-2 was, in fact, designed
MARCH 1987
183
THIS CARD
GIVES A COLLEAGUE
A YEAR’S WORTH
OF VALUABLE INFORMATION
AND INSIGHT
W hen you give PC TECH JOURNAL as a gift
to a client or business colleague,
you’re giving valuable information on
systems design and integration.
PC TECH JOURNAL is the recognized source of
expert facts for designers, integrators and DP/MIS
professionals who require current information and
sophisticated applications and input.
Give a gift that’s delivered 13 times* a year and save 50 % off the
annual single-copy price of S53.35.
*Your gift subscription includes the special PC TECH JOURNAL Directory
issue published in November!
^C7QL_[ P.O.BOX2966
r.v^rn boulder ,0080322
OURNAL
Send Gift TO:
Mr. /Mrs. /Ms.
Company_
Address_
City.
please print full name
. State.
.Zip.
Send Card FROM:
Mr. /Mrs. /Ms_
Company_
Address_
City.
. State.
. Zip.
□ Bill me □ Charge my credit card for $26.70 for 13 issues.
Check one: □ AmEx □ Visa □ MasterCard
Card No_Exp. Date.
Add 56 for postage outside USA, US currency only. Please allow up to 60 days for delivery of first issue.
Basic annual subscription price is 534.97.
L ^?R FASTER^ERVliCE CAL LJOLL-FREE 1-800-852-5200!^_|
BOOK REVIEWS
to support. Complete listings of several
Modula-2 utility libraries (modules) are
included; among them are complex
number, stack, queue, and character
string modules, each of which is imple¬
mented several different ways. Also
listed are modules implementing dy¬
namic memory allocation, process
synchronization, and a simple text edi¬
tor with a spelling checker.
The book mentions several short¬
comings of the language (such as its
lack of support for generic data abstrac¬
tion), but emphasizes possible solutions
and work-arounds, not the problems
themselves. For example, when noting
the very primitive nature of Modula-2’s
concurrent processing facilities, the au¬
thors provide listings of modules to
handle shared variables, interprocess
buffers, and channels, giving an out¬
standing example of Modula-2 s flair for
software tool building.
Although A Software Development
Approach is concise and well-organized,
it sometimes goes into more detail than
is really necessary. For example, as they
discuss dynamically-allocated data struc¬
tures, Ford and Wiener explain the dif¬
ference that exist between singly and
doubly linked lists; this is not the mate¬
rial of a programming language text or
even a text on software development,
but rather one on basic data structures
and algorithms. Wirth’s own book on al¬
gorithms and data structures in Modula-
2 was reviewed in “A Classic Revised,”
Book Reviews, Michael A. Covington,
January 1987, p. 187.
This book is not ideal for those
programmers who know Pascal and
want to get up to speed quickly in Mod¬
ula-2. However, such programmers
should be able to skim the early chap¬
ters in order to understand the differ¬
ences between Modula-2 and its prede¬
cessor, Pascal. Unfortunately, this text
does not provide a summary of the dif¬
ferences between the two languages.
A Software Development Approach
emphasizes software development so
extensively that it would not be difficult
to substitute another language, say Ada,
for Modula-2 in the text. This is not to
say that the book’s description of Mod¬
ula-2 is not accurate and complete; in
fact, it makes a compelling argument
for Modula-2 largely because it empha¬
sizes principles of good software engi¬
neering. This book is a good reference
for the serious Modula-2 user and an
excellent introduction to the language
for anyone considering using Modula-2
for a programming project. m
—ARTHUR A. GLECKER
186
PC TECH JOURNAL
Whetstones/sec
Microsoft 3.31
Lahey 2.0
Thi S is the one.
Whatever the yardstick,
RM/FORTRAN™ blows
the others away. Microsoft 3 si
Sieve? RM/FORTRAN ■ i n i ■
runs 26% to 228% !
^Whetstones? ^l 2 ' 0 , | |
RM/FORTRAN is 11 1 1 11
20% to 33% better. | *Single precision. Run on IBM PC//
And those aren’t our i
benchmarks. They’re the s- _J
industry standards. ( 7
With RM/FORTRAN, g
you can actually feel the ~~
difference in the seat of your pants . . . because
you’ll do less sitting and waiting for those
big, complex mainframe programs to run on
your micro. In fact, an ARPANET Bulletin
Board user said, . . for serious conversion
work of mainframe Fortran code, use the
Ryan-McFarland ...”
RM/FORTRAN is also the first and only PC
Fortran GSA certified at Full Level ANSI 77
with no discrepancies. So programs move effort¬
lessly from your mainframe to a PC, XT, AT or
compatible. And they also port to 68000-based
systems or new 80386 machines. You may already
be using version 1.0 under the name “IBM PC
Professional Fortran by Ryan-McFarland.”
RM/FORTRAN comes with popular
extensions from "VAX, VS and Fortran 66. That’s
more mainline mainframe extensions than any
other micro Fortran.
And there’s more. PC TECH Journal, for
119,000
99,300
89,700
Single precision. Run on IBM PC/AT (6 MHz) with 80287, PC-DOS 3.2
y~V example, said our
jO“compiler’s documentation,
ease of use, speed of
execution, and debugging
facilities place it first for
recommendation. ”
But why spend any
more time reading when
you should be filling out
12 the coupon and getting
your free “RM/FORTRAN
Tools, Utilities and
Applications Directory” and
- sample benchmark programs to
y run on your own PC.
/ Remember, if it isn’t
* RM/FORTRAN, it’s just a
Fortran also-ran.
Ryan-McFarland
609 Deep Valley Drive
Rolling Hills Estates, CA 90274
or call 213-541-4828
RYAN-McFARLAND
r—
7 Knock me out. Send me the benchmark
| programs and the free Applications Directory. ■
Company
Phone (
CIRCLE NO. 137 ON READER SERVICE CARD
NEED IT FAST?
WANT TO KNOW MORE?
DON’T HAVE TIME TO
SHOP AROUND?
INTRODUCING
• • •
I f you’re like most system pro¬
fessionals you’re up-to-date
about the products in the PC
marketplace. You’re aware of
brand and model differences, are
informed about connectivity and
compatibility problems, and you
shop for competitive prices and
fast service.
You’re also probably among the
many PC TECH JOURNAL readers
who purchase by mail. That’s
why we’re starting THE MART—
PC TECH JOURNAL’S First Class
Mail-Order Section.
Starting this month, and every
month hereafter, you’ll find the
products you’re looking for
advertised in THE MART—and
you’ll benefit from the fast
service and helpful support that
identifies PC TECH JOURNAL
advertisers.
If you’re ready for First Class
service, you’re ready for THE
MART.
FIRST CLASS MAIL ORDER SECTION!
AST ADVANTAGE W/128K.$365
VI DO 7 VEGA EGA .$425
GENOA SPECTRUM.$295
FORTE PJ.$875
INTERNAL HARD DISKS FOR THE AT
SEAGATE USED BY IBM
PRIAM 40 MB.$1195
PRIAM 60 MB.$1395
RODIME 20 MB.$595
RODIME 32 MB.$695
CORE 20 MB F".$1195
CORE 30 MB ' F".$1395
CORE 40 MB.$1795
CORE 56 MB. $2595
&39QA
IB ^ T1 I . IMMsj
e reflects quantity purchaj
'lot’s enha
or softwar
mpatibles
"HOT" NEUIPRODUD
★ AMERICA’S
LOWEST PRICES
ARE EVEN LOWER NOW
4B Yi HT.
(25 MS)
UNIock ALBUM “A”
Q1Q QC (Plus $4 ship/handling 1
Foreign orders $10)
• LOTUS 1-
• dBASE II
•FRAMEW
• SYSTAT™
• SPOTLIG
• GRAPHS
• REALIA l
-2-3™ (1.A, 1.A*. 2.0)
1™ (1.0, 1.1. 1.2 & PLUS)
'ORK™ (1.0.1.1. It) 1
1 (1.3 & 2.0)
HT™ (i.o & i.i) ;
fRITER™ (4.3 & 4.31) :
COBOL™ (1.2,2.0) i
EC VT-100/VT-52. a Retrog
). a Tektronix 4010/4014 or
Tektronix 4027. Over 12.01
rrently in use world-wide at
ations. educational facilities
nd independent consulting
information call toll free
(25 MS)
B F. HT.
(25 MS)
IBM XT 256K/1 Dr 20 MB
IBM XT 256K/1 Dr. 30 MB
IBM A T ;" 2K/20 MB
IBM AT 512K/30 MB
Compaq Desk Pro-1 128K/1 Dr
Compaq Portable 256K/2 Dr.
AST 6 PAK w/384 K/Advantage
MCI MSC w/384K
Samsung- PGS Max 12 10S
Princeton HX 12/E 43E
Hercules Color Card/Monochrome graphic 15(
Hayes 1200B w/SW
US Robotics Courier 2400
IPEP1
E
SPECIALS
MR Hard flick
Perfo
Drive Subsyste
DRIVE PEL
j Configuration j Sta
AT SPEEI
industry's recognized leader in High Performance Sp€ ji
ve performed extensive research and developed unmatc ;i
field. Our products offer the COMPLETE solution.
-Switch from five frequencies including the standi:
IMz. Uses reliable frequency synthesis to allow compote j
h all IBM ATs including the TYPE 2 and Model 239
ISpec Crystals-The famous Ariel cyrstals. Choose from;
17-18-19-20-21-22-23-24 MHz.
FAST 80286-1 0-Micro-processor for 20-24 MHz speeds
FAST RAM-For System Board 128K 120 & lOO NS
INTRODUCING
4CaST/2 T
Complete
Forecasting
System
Both versions run on IB*
For marketing, planning, financial
and forecasting professionals:
■ Easy to use menus with on-screen help
facilities
■ Most often used forecasting methods
■ Popular spreadsheet interfaces
■ Outstanding color graphics
■ Fast RAM-based program
■ Thoroughly tested and numerical!)
accurate
■ Exponential smooth
■ Step-wise and robusi
capabilities
■ Macro language for
applications
■ Full documentation
Only: $350 Demo l
4CaST/2X: includes a f
version of the Census’X
Only: $595 Demo T
IB for AT 57!
ISA MC AMEX COD PO
lC a9 0>
“Top Sellers Series”
UNIock DISK ‘‘NO. 101”
up/handling
$14.95
LOTUS 1-2-3“
(1-A. 1.A-. 2.0)
‘‘Top Seller Series”
UNIocks individual
best selling programs
at a special low price!
re (
MICROWAY MEANS 8087 PERFORMANCE
FastCAC H E-286™
Runs the 80286 at 8.5 or 11 MHz and the
80287 at 5, 6 or 11 MHz Includes 8
kbytes of 55ns CACH E Works with more
PCs than any other accelerator, including
Leading Edge Model D, Compaq, and
Turbo motherboards Includes 8088
Reboot Switch, DCache and Diagno¬
stics . From $449
LOTUS/INTEL EMS
SPECIFICATION BOARDS
MegaPage™ The only EMS board which
comes populated with two megabytes of
cool-running, low power drain CMOS
RAM installed Includes RAM disk, print
spooler, disk cache and EMS drivers For
the IBM PC, XT and compatibles... $549
MegaPage with 0K. $149
MegaPage AT/ECC™ EMS card for the
PC AT and compatibles includes Error
Correction Circuitry. With ECC, 11 RAM
chips cover 256K so the user never en¬
counters RAM errors Sold populated with
1 megabyte CMOS .. . $699 or with 3
megabytes CMOS cool running low
power drain RAM ... $1295. Optional
serial/parallel daughterboard.$95
NUMBER
SMASHER/ECM T
Triples the speed of your
PC, XT or compatible!
From .^yll
$599 Ji
A Megabyte
for DOS
PC Magazine “Editor’s Choice”
DATA ACQUISITION and
REALTIME TOOLS
DAL'“ - “Data Acquisition Language"
Unkelscope " - A real time data acquisi¬
tion, control and process software pkg.
87FFT and 87FFT-2
TransView Menu driven FFT Spectrum/
transfer analyzer. $250
RTOS- REALTIME OPERATING SYSTEM
A multi-user, multi-tasking real time oper¬
ating system Includes a configured ver¬
sion of Intel’s iRMX-86, LINK-86, LOC-86,
LIB-86, OH-86 and the MicroWay
87DEBUG. Runs on the IBM-PC, XT, PC-
AT and COMPAQ.$600
INTEL COMPILERS Available for RTOS
FORTRAN-86, PASCAL-86, PL/M-86.
A2D-160™
The Fastest 12 bit
A/D Converter
287 Turbo™-10/12
$1295
160,000 Samples per second
Pseudo Random Noise Generator/DAC
Optional signal conditioners
AFM-50 Programmable Low Pass
Filter Module. $225
fi«|| 287Turbo runs the 80287
at 10 or 12 MHz in the IBM
I PC AT, compatibles and the
pi: new Compaq 386 with 100%
Ipjg software compatibility.
12 MHz.$550
PC Magazine “Editor’s Choice”
8087 SOFTWARE
IBM BASIC COMPILER.$465
MICROSOFT QUICK BASIC.$79
87BASIC COMPILER PATCH.$150
IBM MACRO ASSEMBLER.$155
MS MACRO ASSEMBLER.$99
87 MACRO/DEBUG.$200
MICROSOFT FORTRAN.$209
RM FORTRAN.$399
LAHEY FORTRAN F77L.$477
MS or LATTICE C. CALL
STSC APL* PLUS/PC.$450
STSC STATGRAPHICS.$675
SPSS/PC +.$675
87SFL Scientific Functions.$250
PHOENIX PRODUCTS. CALL
FASTBREAK for 1 -2-3 V.1 A.$79
HOTLINK for 1 -2-3 V.1 A.$99
8087 UPGRADES
All MicroWay 8087s include a one year
warranty, complete MicroWay Test Pro¬
gram and installation instructions
8087 5 MHz $114
For the IBM PC, XT and compatibles
8087-2 8 MHz $149
For Wang, AT&T, DeskPro, NEC, Leading Edge
80287-3 5 MHz $179
For the IBM PC AT and 286 compatibles
80287-6 6 MHz $229
For 8 MHz AT compatibles
80287-8 8 MHz $259
For the 8 MHz 80286 accelerator cards
80287-1010 MHz $395
For the Compaq 386
Call for prices on V20, V30,
64K, 128K and 256K RAM
287TURBO-PLUS™
Speeds up your AT
Adjustable 80286 Clock 6-12 MHz
10 MHz 80287 Clock
Plus Full Hardware Reset. $149
Optional 80286-10
287TURBO-PLUS
With 80287 10 MHz.
With 80287 12 MHz.
CALL (617) 746-7341 FOR OUR COMPLETE CATALOG
p ° Box79
V ^✓Kingston, Mass.
If^- - 02364 USA
The World Leader
VS)/ (617)746-7341
in 8087 Support!
MicroWay Europe
32 High Street
Kingston-Upon-Thames
Surrey England KT1 1 HL
Telephone: 01-541-5466
PC XT /AT ADDON BOARDS
MS DOS/QW Basic 3.2.$80
XT Mother Board/Bios.$83
XT Turbo Board/Bios.$103
Monochrome/Qraphic/Printer Card . . . $66
Monochrome Graphic Card.$60
Color Qraphic/Prlnter Card.$60
Color Graphic Card.$50
XT Multi I/O Card.$73
XT I/O Plus II.$45
Floppy Disk Controller
1 port.$25
2 port.$33
RS232 Interface Card
1 port.$22
2 port.$27
Parallel Printer Card.$19
Clock Card.$25
Game Card.$18
Hard Disk Controller Card.$100
Hard Disk/Floppy Disk Controller Card $123
XT 2 MB RAM Card.$195
AT Mother Board/Bios.$490
AT 3 MB Multifunction Card.$178
AT 4 MB RAM Card.$210
AT 1.2M Floppy Disk Card.$72
EGA Card.$245
AT HDC/FDC Controller w/Cable.$215
KEYBOARDS
• 5151 Style AT/XT Keyboard.$68
• 747 AT Style AT/XT Keyboard.$53
POWER SUPPLY
150 Watt XT Power Supply.$53
200 Watt AT Power Supply.$85
MONITORS
« PARCO (Sony)
Height Resolution
12 "90° Monitor 800
x 700 Lines With
(Ion-Glare
Screen/Swivels
Base Amber. $115
• SAMSUNG - Amber.$79
• TAXAN 620 Color.$375
• TAXAN 630 Super Hi-Res. Color.$445
• TAXAN 640 Super Hi-Res. Color.$495
• TAXAN 760 EGA Monitor.$499
PRINTERS
• RITEMAN PLUS (120 cps. 80 col.).$175
• RITEMAN -15 (160 cps. 136 col.).$345
• BROTHER M1509 (180 cps. 136 col.) . . . $395
DRIVES
• TEAC 360K Floppy Drive.$90
• FUJISU 360K Floppy Drive.$82
• CHINON 360K Floppy Drive.$85
• 20MB Hard Dlsk/WD.$Call
• 30MB Hard Dlsk/WD.$Call
• 1.2MB TEAC AT Drive.$135
CHASSIS
• Flip Top XT Case.$29
• Slide Off XT Case.$36
• AT Jr. Style XT Case.$37
• AT Case.$85
All Cases Include Speaker/Hardware
MODEMS
• Internal Modem-Everex.$137
Select 300/1200 bps, powerful BltCom
Communication Software Included. Auto
answer/dial.
• External Modem-Smarteam.$160
PC/AT 2000 SYSTEM
• 80286 Processor (6/8MHZ)
• 1024K RAM
• 1.2MB Floppy Disk Drive
• AT Hard Disk/Floppy Disk Controller Card
• Clock/Calendar with Batter Backup
• AT Style Keyboard
• 200W Power Supply /Case
• Runs All Major Software
• Six Month Warranty
$1249
PC/XT 2000 SYSTEM
• 640K RAM
• 360K Half Height Floppy Drive
w/Controller
• AT Style Keyboard
• 150W Power Supply
• Slide Off Case
• Runs All Major Software
• Six Month Warranty
$495
(201) 944-5002
2142 Pi. Hudson St.
Fort Lee, NJ 07024
IBM PC, IBM XT and IBM AT are trademarks
OP IBM corpration.
MS-DOS Is a trademark of Microsoft
Corporation.
Prices Subject to Change without notice.
ORDER TOLL FREE:
1-800-367 1132
MONDAY - SATURDAY 9AM - 6PM EST.
SUNNYTECH INC
Customer Service
(201) 944-5010
9AM - 5PM EST. M-F
ORDERS SHIPPED UPS COD
WITHIN 24 HRS.
CIRCLE NO. 184 ON READER SERVICE CARD
*
*
*
¥
¥
¥
¥
¥
¥
¥
Turbo Screen/Application Generator
Be 3-6 times more Productive!!!
Guaranteed* For$69 95
(one month holiday special)
Turbo Master helps you develop your functional specs (Generates Screen, File, Isam, Variable and Menu Control Documentation) and
then allows you to “Quickly” prototype a validation model of your system. (Which can be incorporated as part of your functional
specifications.) Turbo Master can then generate a super-fast Turbo Pascal Program that features advanced screen input and control, a
professional control menu, the database functions of (1) Add/Edit/Delete Records (2) Search Database by any Key (3) Database
Recovery programs (4) Screen/Printer Report for each of the keys. Each Key can have up to 6 fields.
Our Users Report
• "Since Fallot 85,1 have generated over 300 program modules with it and find it to be just what I needed.
Most all of the modules represent 5000 to 8000 lines of Pascal Code" Oner Systems.
• "By being able to produce a 21 screen and menu control demo so quickly helped me obtain the contract."
• "Speeded up my screen development by 6 times" Elexor Associates.
• "Has many of the features of the Super Mini development tools costing $10.000." Applied Micro Systems.
• "Saved months from having to recode portions of our system." Real Green Inc.
• "We developed 3 Vertical Market Applications in the 6 months we had your system." Absolute Systems.
# TDIAI I ry the demo package included for 30 days
RISK FREEl TRIAL If not pleased return for a full refund
Receive 6 Floppy Disks and a manual containing:
1. Screen Palnter/Edltor & Generator • Paint menu screens using keyboard • Has variable dictionary to
provide consistant edits • Date entry masks • Date & range checks • Field and/or global help screens
• Box & line drawing • Error & message handler
2. Help Screen Maker - Different help screen for each field.
3. Menu Editor & Generator • Allows selection by 4 methods.
4. Database Program Generator • Produces "Easy to Read" code that can be easily modified by
experienced developers.
5. Resident Isam Module - compatible with Turbo Toolbox, but saves 8K of codespace and 10K of
dataspace.
6. Turbo Resident Screen Capture Utility which allows you to capture Text Screens from any running program.
Btrieve Interface Module
Allows full multiuser record locking and
Automatic file recovery for the industry’s
most popular LANs. Works with the in¬
dustry’s leader of professional
databases for multiuser LANs.
Requires Btrieve by SoftCraft Inc. $99.95
□ Turbo Master by
Hawaiian Village Software . . $69.95
□ Btrieve Interface by
Innovative Interfaces 99.95
□ Turbo Pascal by
Borland International $99 95
For Further Information Call:
(305) 892-5686
& Much, Much More
Credit Card & C.O.D. Orders Call: 1-800-821-9503 on ,W»"'»
In Florida 1-800-342-0137
Add 7.50 shipping to all U.S Cities All foreign
orders add 15.00 per producl ordered
CIRCLE NO. 132 ON READER SERVICE CARD
Btrieve is a trademark of SoftCraft Inc. Turbo Pascal &
Turbo Database Toolbox ar^ trademarks of Borland
International
***********************
***************
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
*
*
4
4
4
4
4
4
4
4
4
4
4
4
*
Today’s 386 compatibles
fall into two categories:
The PC Designs GV-386 is not an enhance¬
ment. It’s the fastest 80386-based compatible
you can buy.
That’s because the engineers here at PC Designs
realized early on that to take full advantage of the
80386 chip, an equally revolutionary motherboard
was needed.
So they started with a blank piece of paper and—
from the ground up—designed a 80386 micro that
blows the doors off every other compatible available.
Get Power Hungry
At the heart of the GV-386 is a 32-bit processor
operating at 16MHz clock speed; keyboard switchable
to 8MHz (it will even support 24MHz operation, once
Intel makes that available).
And that’s Zero Wait State clock speed, thanks to a
specially-designed, high-speed memory cache circuit.
When enabled, this unique circuit—with a full 64K of
static RAM—allows you virtually instant data
retrieval 80 percent of the time.
The cache circuit—a PC Designs exclusive—also
ensures rock-solid reliability because it eases the load
high speed puts on the integrated circuits. Even at
zero wait state, the GV-386 never exceeds IC design
specifications.
Those that “enhance” technology.
And those that blow it away.
Radical, but compatible
Despite its radical innovations, the GV-386 was
designed to retain the standard 8MHz IBM PC-AT
bus timing. The result is unparalleled compatibility
with existing software and hardware.
And every GV-386 is bundled with Desqview 1.3
from Quarterdeck Office Systems, giving you both
expanded memory management and multitasking
capabilities allowing up to nine simultaneous opera¬
tions.
Affordable power
If all this speed and performance doesn’t blow you
away, take a look at the price: The standard system
starts at around $4000. And it’s available now.
The fact is, it’s the most innovative compatible
to date. So why settle for an 80386 machine that
just “advances” technology, when the GV-386
blows it away?
PC
2500 N. Hemlock Circle
Broken Arrow, OK 74012
19 Rector St., Suite 2705
New York, NY 10006
Call us now in New York: 1-212-514-7280 or in Tulsa: 1-918-251-5550
CIRCLE NO. 159 ON READER SERVICE CARD
GET 1 YEAR ON SITE SERVICE FREE
B.E.S.T. 286 AT m Compatible
640 KB RAM Bare Bone System:
only WWW (Qty
7 *
■EH
H
! >., J
Evaluation Unit $1,095
We Welcome VAR and Dealer Inquiry
(quantity discounts available)
All major credit cards accepted
1024 KB on Mother Board
• 200 WATT U.L. Approved Power Supply
• AT case with Lock and LED indicators
• 5060 Compatible Keyboard
• MS DOS 3.1 (*85 value FREE)
• Full Documentation (
• Complete technical support
• Fully compatible with IBM-AT
SYSTEM CONFIGURATION B:
• AT 640 KB RAM Bare Bone System
• 1.2 MB Teac Floppy Disk Drive
• 30 MB Hard Disk (39MS)
• Western Digital WA-2 Floppy & Hard Disk Controller
• 1 Year Nationwide (50 States) ON-SITE Service
(Includes Parts & Labor) £ p
• MS DOS 3.1 nnli/V I MMh
.is“sr s o;'i y $i ^95 m m
GET OUT OF THE LOOP!
NO MORE RETURNS OR LONG WAITS FOR REPAIRS
WE WILL FIX YOUR COMPUTER ON SITE
FREE OF CHARGE FOR 1 YEAR
Business Engineering Scientific Technologies
1914 W. Farwell • Chicago, IL 60626
(312) 465-8886 or (312) 262-3480
Prices subject to change without notice
IBM AT is a trademark of International Business Machines Corporation
Turbo 286 - AT Compatible $1295
• 8 expansion slots
• 200 Watt Power Supply
MEDICAL & DENTAL
• Billing & Posting
• Faster Collection
• Improved Cash Flow
• Easy Insurance Procedure
• Appointment Scheduling
• Management Reports
LEGALSOFTWARE
• Real-Time, Multi-User y
• Time & Billing ^
• Client/Matter Reports # p
• Aged A/R Report # kj
• 640 K RAM
• 6/8 MHZ Switchable
from keyboard
• 2 Floppy & Hard Disk
Controller
• 1.2 MB Floppy Disk
Drive
• Serial, Parallel Ports
• Color Graphics Card
• AT keyboard
VIDEO STORE
MANAGEMENT
Full Rental Tracking
Membership Control
• Matter Account Inquire • Employee Code System
• Transaction Entry &
Editing
CONSTRUCTION
• Fully Integrated
Construction
Accounting System
• Job Costing
• Accounts Payable
• General Ledger
• Payroll
• Accounts Receivable
• And much much more
• High/Low Rental Report
• Overdue Tape Report
POINT OF SALE
• For all Retail &
Wholesale Businesses
• Cash Drawer & Bar
Code Scanner Interface
• Complete Audit Trail of
all P.O.S. Transactions
• Inventory Inquiry during
sale, and much more...
E
Editor's Choice:
"Proteus 286: the
great performer"
Editor , Business
Computer Digest
PROTEUS-286GT includes:
80286-10 Intel CPU running at 12.5
1MB RAM expandable to 4MB on mainbd
8-layer stable motherboard
8 1/0 slots, keybd select speed
3 serials, 2 Parallels on mainbd
Clock/cal, battery backup
Hard Disk & Floppy Controller
5 Mhz DMA bus
200 Watts quality Power Supply
Two Floppy Drives (1, 1.2MB, 1, 360K)
High Quality AT keyboards
Well Written Manuals & Utilities
12.6/6Mhz system price $2495
10/6Mhz system price $2195
10/6Mhz zero wait system $2395
12.5Mhz, 40Megabyte EGA system $3695
To order or for information: Call
PROTEUS TECHNOLOGY CORP.
377 Route 17, Airport 17 Center
Hasbrouck Heights, New Jersey
07604
NO OTHER CLONE MATCHES PROTEUS
IN IBM COMPATIBILITY, SPEED,
RELIABILITY, SUPPORT & DELIVERY
Proteus Features Include:
• 12.5 Mhz Clock Speed upto 4MB Ram on motherboard.
• 8-layer stable motherboard, 3 Serials, 2 Parallels on mainbd
• Made in USA, 100% compatible with Autocad, Novell, Zenix
• 30-day money back guarantee. Total satisfaction guaranteed
• Free nationwide onsite maintenance, 15-month Full Warranty
• 24-hour online Tech support
ADD-ONS
Hard Disks:
20MB Seagate $285
30MB Seagate $530
40MB Seagate $695
80MB Seagate $1095
Monitors:
Monochrome $109
Color monitor $295
NEC EGA monit. $585
Various EGA, CGA, & Monochrome cards available,
call.
201-288-8269
Telex 510 601 0960
Fax 288 1059
CIRCLE NO. 183 ON READER SERVICE CARD
Programmer’s Paradise Gives You Superb Selection,
Personal Service and Unbeatable Prices!
Welcome to Paradise. The MS/PC-DOS and XENIX software source that caters to your programming needs.
Discover the Many Advantages of Paradise...
• Lowest price guaranteed • Huge inventory, immediate shipment • Special orders
• Latest versions _ • Knowledgeable sales staff • 30 -day money-back guarantee
We’ll Match Any Nationally Advertised Price.
LIST OURS
MAKE. LINT. PROFILE, UTILITIES
C CROSS REFERENCE GENERATOR 50 35
LMK 195 135
POLYMAKE 99 78
OTHER POLYTRON CALL CALL
PMAKER 125 89
PFINISH 395 235
THE PROFILER 125 94
PC LINT 139 105
PRE-C 295 159
TEXT MANAGEMENT UTILITIES 120 85
C+ +
LIST OURS
ADVANTAGE C+ +
$ 495
469
PF0RCE++
395 CALL
C COMPILERS
C-86 PLUS
497
445
DATALIGHT -C
60
49
DATALIGHT - C DEVELOPER’S KIT 99
i9
LATTICE C 3.2
500
269
LATTIC C W/SOURCE
900
545
LET’S C
75
59
W/CSD DEBUGGER
150
109
MICROSOFT C 4.0
450
275
MARK WILLIAMS C
495
289
SUPERSOFT C
395
339
WIZARD C
450
369
C INTERPRETERS
C-TERP
300
235
INSTANT C
500
379
INTRODUCING C
125
105
RUN/C
150
89
RUN/C PROFESSIONAL 1.1
250
169
ASSEMBLERS, LINKERS
3861ASM/LINK
495
445
ADVANTAGE LINK
395
349
MACRO-86
150
98
PASM-86
195
125
PLINK 86 PLUS
495
325
QUELO 68000 X-ASM
595
509
C UTILITY LIBRARIES
ASYNC MANAGER 175 135
BASIC C 175 129
C ESSENTIALS 100 85
C FOOD SMORGASBORD 150 95
W/SOURCE 300 188
C TOOLS PLUS 175 135
ESSENTIAL C UTILITY LIBRARY 185 135
ESSENTIAL COMMUNICATIONS 185 135
W/BREAKOUT DEBUGGER 250 195
GREENLEAF FUNCTIONS 185 135
GREENLEAF COMM 185 135
THE HAMMER 195 175
MULTI C 149 135
MULTI COMM 149 135
PFORCE 395 245
TIMESLICER 295 265
W/LIBRARY SOURCE
TOPVIEW TOOLBASKET
250
189
SCREEN DISPLAY, WINDOWS FOR C
C WORTHY
295
269
CURSES
125
85
W/SOURCE
250
184
GREENLEAF DATA WINDOWS
225
179
W/SOURCE
395
339
FLASH UP WINDOWS
75
68
MICROSOFT WINDOWS
DEVELOPMENT SYSTEM
500
319
ON-LINE HELP
149
109
PANEL
295
219
DEBUGGERS
ADVANCED TRACE 86 175 129
BREAKOUT 125 99
CODESMITH 86 145 105
C SPRITE 175 125
CSD SOURCE DEBUGGER 75 59
PERISCOPE 13.0 345 293
PERISCOPE II 3.0 175 145
PERISCOPE II-X 3.0 145 109
PFIX 86 PLUS 395 235
XVIEW86 60 49
Lattice Specials
C COMPILER
500
269
C CROSS REFERENCE GENERATOR 50
35
C FOOD SMORGASBORD
150
95
C-SPRITE
175
125
CURSES
125
85
DBC-III
250
175
LMK
195
135
RPGII COMPILER
750
635
RPG COMBINATION PACK
1100
939
SECRET DISK
120
85
SIDETALK
120
85
TEXT MANAGEMENT UTILITIES
120
85
GRAPHICS
ADVANTAGE GRAPHICS
295
225
ESSENTIAL GRAPHICS
250
195
GRAPHIC
350
289
GSS GRAPHICS DEVELOPMENT
TOOLKIT
495
379
GSS KERNEL SYSTEM
495
379
GSS METAFILE INTERPRETER
295
239
GSS PLOTTING SYSTEM
495
379
HALO—ONE LANGUAGE
300
209
W/TEN FONT PACK
425
297
HALO—FIVE MICROSOFT
LANGUAGES
595
415
METAWINDOWS
185
115
METAWINDOWS PLUS
235
189
METAFONTS
80
59
METAFONTS PLUS
235
189
POLYWINDOWS
SCREENPLAY (LATTICE)
SOFTSCREEN HELP
VIEW MANAGER
VITAMIN C 3.0
VC SCREEN
WINDOWS FOR C
WINDOWS FOR DATA
ZVIEW
FILE MANAGEMENT
BTRIEVE
XTRIEVE
W/REPORT GENERATION
BTRIEVE/N
XTRIEVE/N
W/REPORT GENERATION
CTREE
RTREE
CTREE/RTREE BUNDLE
CQL
DBC III
W/SOURCE
DBC III PLUS
DB VISTA
W/SOURCE
DB QUERY
W/SOURCE
FABS
FABS PLUS
INFORMIX
INFORMIX 4GL
INFORMIX SQL
PHACT
CALL CALL
150 135
195
275
225
99
195
295
245
245
245
390
595
595
940
395
295
650
395
250
500
750
195
495
175
199
199
84
145
239
189
195
195
315
465
465
750
329
249
529
329
175
379
599
155
425
March BUNDLE
of the Month
RUN/C Pro- Best-selling C interpreter PLUS
Greenleaf Functions or C Utility Library.
Convenience disk included—One command loads
library!
LIST TOGETHER $435 OURS $289
EDITORS
BRIEF
CVUE
W/SOURCE
EDIX
EMACS
EPSILON
FIRSTIME (C)
KEDIT
I SF
PMATE
PC/VI
SPF/PC
VEDIT
VEDITPLUS
195 CALL
75 59
250
195
295
195
295
125
125
195
149
195
150
185
ADDITIONAL PRODUCTS
DAN BRICKLIN’S DEMO PROGRAM 75
FASTBACK 175
INTERACTIVE EASYFLOW 150
PDISK 195
SOURCE PRINT 97
195
155
265
159
229
105
89
119
129
149
109
139
59
149
129
129
87
LIST OURS
TOOLS FOR TURBO PASCAL
ALICE
95
68
FIRSTIME
75
59
FLASH UP WINDOWS
90
79
TURBO HALO
129
99
SCREENPLAY
100
89
SCREENSCULPTOR
125
94
T-DEBUG PLUS
60
50
TURBO EXTENDER
85
65
TURBO PASCAL ASYNC MGR
100
84
TURBO PROFESSIONAL
70
49
TURBO POWER TOOLS PLUS
100
83
TURBO WINDOWS
80
65
OTHER TURBO TOOLS
CALL CALL
NEW Products
ADVANTAGE C + + for XENIX-Take
advantage of object-oriented programming
methods. Add resiliency and flexibility to your code.
Build large and sophisticated programs more
productively.
List $695 Ours $660
ADVANTAGE Make—Feature-packed
MS/PC-DOS version of UNIX MAKE utility.
List $125 Ours $99
SSP/PC—Fast, extremely accurate library of over
145 math subroutines. Callable from C, FORTRAN,
Pascal, BASIC.
List $350 Ours CALL
TIMESLICER—New Microsoft version.
Multitasking, linkable library supporting concurrent
tasks and real-time event processing with header
files provided for C+ +, C and assembly. Library
source available!
List $295 Ours $265
VENTURA PUBLISHER (XEROX)—Desktop
publishing software, lightning fast, loaded with
features. Create professional-looking docu¬
mentation at minimal cost!
List $895 Ours $805
BASIC
BETTERBASIC
199
139
SUMMIT ADD ONS
CALL CALL
BETTER TOOLS
95
89
FINALLY
99
89
MICROSOFT QUICKBASIC
99
75
PROFESSIONAL BASIC
99
75
8087 MATH SUPPORT
50
45
PANEL-BASIC
145
115
TRUE BASIC
150
105
ADD ONS
CALL CALL
COBOL COMPILERS/UTILITIES
MICROSOFT COBOL
700
445
MICROSOFT COBOL TOOLS
350
205
MICROSOFT SORT
195
139
MICRO/SPF
175 CALL
OPT-TECH SORT
149
115
REALIA COBOL
995
785
SCREENPLAY
175
155
RM/COBOL
950
639
RM/COBOL 8X
1250
895
VISUAL COBOL (MBP)
1150
1015
FORTRAN COMPILERS/UTILITIES
LAHEY FORTRAN
477 CALL
MICROSOFT FORTRAN
350
209
RM/FORTRAN
595
389
ACS TIMES SERIES
495
419
87SFL
250
225
FOR-WINDS
90
78
FORLIB-PLUS
70
54
GRAFMATICS OR PLOTMATICS
135
119
GRAFMATICS AND PLOTMATICS
240
219
FORTRAN SCIENTIFIC
SUBROUTINES
295
249
STRINGS AND THINGS
70
54
XENIX/UNIX SOFTWARE
XENIX SYSTEM V (COMPLETE
SYSTEM)-SCO
1295
995
SYSTEM V/AT—MICROPORT
440
395
OTHER SCO AND
MICROPORT
CALL CALL
ADVANTAGE C+ +
695
660
BTRIEVE
595
465
C-ISAM
319
285
CTREE
395
329
MICROSOFT BASIC
350
239
MICROSOFT COBOL
995
635
MICROSOFT COBOL TOOLS
450
205
MICROSOFT FORTRAN
695
439
MICROSOFT PASCAL
695
439
PANEL
625
545
RM/COBOL
1250
949
RM/FORTRAN
750
549
195
155
TREE DIAGRAMMER
77
69
ADDITIONAL LANGUAGES
495
425
VENTURA PUBLISHER (XEROX)
895
805
APL PLUS
595
429
150
129
JANUS ADA/C PACK
95
89
195
169
PASCAL COMPILERS
LOGITECH MODULA 2
89
63
795
639
MICROSOFT PASCAL
300
189
PC/FORTH
150
119
995
799
PASCAL 2
350
329
SMALLTALK V
99
88
795
639
TURBO PASCAL
100
69
TURBO PROLOG
100
75
OTHER BORLAND
CALL FOR OTHERS/ADD-ONS!
Terms and Policies
• We honor MC, VISA, AMERICAN EXPRESS
No surcharge on credit card or C.O.D. Prepayment by check. New York State residents add applicable
sales tax. Shipping and handling $3.00 per item, sent UPS ground. Rush service available, prevailing rates.
• Programmer’s Paradise will match any current nationally advertised price for the products listed in this ad.
• Mention this ad when ordering—some items are specially priced.
• Prices and Policies subject to change without notice.
• Corporate and Dealer inquiries welcome.
1-800-445-7899 In NY: 914-332-4548
Programmer’s Paradise
42 River Street, Tarrytown, NY 10591
914-332-4548
Programmer’s
WSSJM
CIRCLE NO. 143 ON READER SERVICE CARD
TOOLS !
for Professional Programmers
asmTREE™
Database Development System
A database system is the heart of just about every
successful! software package ! Accounting systems,
Mailing programs, Analysis software, plus many other
types of packages have reaped the benefits of a database.
NOW you too can utilize a sophisticated B+Tree
database for your programming needs. Whether you
program in Assembler, C, PASCAL, or FORTRAN, you can
have all the advanced capabilities of asmTREE at your
finger tips. asmTREE is written in assembly language for
fast execution and small code size - for the DOS 2.xx or
newer environment.
ISAM Functions • NO ROYALTIES - Full SOURCE CODE
asmTREE™ - The Programmer’s Database
Only $395.00 - Complete
Other fine development tools -
•ASMLIB - The Programmer’s Library - over 210 functions for Assembler, C,
PASCAL, and FORTRAN. NO ROYALTIES. With SOURCE CODE .. $149
•FPLIB * IEEE FLoating Point for REALIA ,V COBOL .$149
•Turbo.ASM - Assembly Langauge interfacing made easy for TURBO PASCAL ...
$99.95
CALL TOLL FREE 1-800-262-8010
in Calif. CALL 1-714-526-5151
BC Associates
3261 N. Harbor Blvd - Suite B
Fullerton, CA 92635
CANADA'S SOURCE
FORC
Compilers • Utilities & Aids • Editors
Interpreters • De-Bugging Tools
File Access Systems • Graphics
GREENLEAF
SOFTWARE 0
<^>
Lattice
LIFEBOAT
Complete Line of Programming Development Tools
Full Service and Support - Fast Delivery
CORPORATE DISCOUNTS
(416) 449-9252/5
SCANTEL SYSTEMS LTD.
801 YORK MILLS RD., 201, DON MILLS, ONT M3B 1X7
MEGAMEMORY AND
DESKTOP PUBLISHING
Lowest Prices In USA
Fully Populated 2MB Boards
Made by Tall Tree Systems
HIGHEST QUALITY RAM CHIPS
JRAM-2.$319
JRAM-3 LOTUS-INTEL.$389
JRAM-AT.$389
JRAM-AT3 LOTUS-INTEL.$429
JLaser-Plus PC.$599
SUPER SPECIAL
OMS KISS Laser Printer
W/TWO MEGABYTE JRAM-3
and JLASER-PLUS.... $2499
600x300 Dots Per Inch!
EVSAN COMPANY
P.O.BOX 2143 DALY CITY, CA 94017
(415) 991-1051
THE RAM EXPLOSION
5119A Leesburg Pike, Suite 260
Falls Church, VA 22041
(703) 569-4471
Dealer Inquiries Invited
VISA/MASTERCARD AMEX
An Authorized TALL TREE DEALER
MEC
41256
41256
41256
4164
4164
4464
4464
4116
DYNAMIC RAMS
100ns
100ns
150ns
120ns
120ns
150ns
120ns
150ns
150ns
65.00
4.75
2.75
3.10
1.20
1.00
4.25
3.95
.98
V-20
V-20
V-30
27512
27256
27C256
27C256
27128
27128
2764
2764
27C64
2732A
2732A
2564
2532
2716-1
2716
2708
8mhz
5mhz
8mhz
EPROMS
250ns
250ns
200ns
250ns
150ns
250ns
200ns
250ns
200ns
200ns
250ns
450ns
450ns
350ns
450ns
450ns
8 0 0 O' s
9.95
8.95
11.00
18.75
5.50
7.10
6.75
5.75
3.60
3.75
3.20
4.90
3.90
3.50
7.50
4.10
3.70
2.95
2.50
8031 AH
8035
80C35
8039
80C39
8085A
80C85
8086
8155
8156
8212
8216
8226
8237A-5
5.25
1.95
3.75
2.50
4.00
1.75
3.75
5.00
1.60
2.25
1.60
1.50
1.75
4.75
B243
8250A
8251A
8253-5
8254
8255A-5
8272
8274
8284
8288
8748H
8749H
2.95
5.25
6.25
8.25
PRIME PARTS
100% GUARANTEED
MATH CO-PROCESSORS
C8087- 2 8mhz 142.00
C80287-6 6mhz 168.00
C80287-8 8mhz 275.00
STATIC RAMS
43256L
6264L
6264L
6264L
6264P
6116P
201 SB
4016
4016
2114A
6147
120ns
100ns
120ns
150ns
150ns
150ns
100ns
150ns
200ns
120ns
35ns
25.50
3.95
3.60
2.85
2.65
1.45
1.75
1.60
1.30
1.50
3.25
COLOR GRAPHIC CONTROLLER :
D7220AD 18.50
MOTHERBOARDS
XT Motherboard $ 149.00
XT TURBO BOARD 210.00
AT Motherboard 999.00
IBM COMPATIBLE
INTERFACE CARDS
Floppy Disk Drive Adaptor $ 45.00
Color Graphic Adaptor 80.00
Monographic Card 99.00
Multifunction Cards 95.00
FLOPPY DISK DRIVES
TEAC 51" FD55B 94.00
FUJITSU 5V M2551 82.00
DIGITAL REAL TIME CLOCK
Z80A CPU
Z80A CTC
Z80A PI0
Z80A DART
STATIC RAMS
4mhz
4mhz
4mhz
4mhz
PROMPT DELIVERY
TERMS & CONDITIONS :
1) Visa & Mastercards Accepted with
3% surcharge.
2) Prices subject to change. PLease call
for current & volume pricing.
3) Shipping & Handling (1 lb)
UPS Surface S3.00
UPS 2nd Day $4.50
California Residents add 6.5% sales
tax.
OFFICE HOURS :
Monday thru Friday 7:30AM - 5:30PM
Saturday 7:30AM -12:00Noon
Data Sheets : $0.25 each
Quarterly Flyers available , please call
We reserve the right to substitute
manufacturer. All merchandise subject
194
CIRCLE NO. 171 ON READER SERVICE CARD
CIRCLE NO. 112 ON READER SERVICE CARD
PC TECH JOURNAL
ITS TEK-NET-BBS (703) 690-7462
“Serving the Nation’s Capitol
and the World ”
Drives
20 MB SEAGATE 65MS $379
30 MB SEAGATE RLL $479
20 MB ST4026 AT $573
30 MB ST4038 AT $651
40 MB ST4051 AT $792
80 MB ST4096 AT $1273
40 MB PRIAM XT $1395
60 MB PRIAM XT $1450
40 MB PRIAM AT $1175
60 MB PRIAM AT $1350
BERNOULLI DUAL 10 $1839
BERNOULLI DUAL 20 $2494
20MB PLUS HARDCARD $695
20MB MAYNARD HCARD $759
ISI WORM 220MB INT. $2995
60MB ARCHIVE TAPE $740
60MB ARCH. EXT. TAPE $740
60MB GENOA TAPE $935
60MB SYSGEN $1089
TOSHIBA 3.5 DRIVE $150
•TOSHIBA 5.25 EXT. $349
FUJITSU 360 K DRIVE $89
Laser Printers
CANON A1
CANON A2
HP LASERJET
QMS KISS
XEROX 4045
$2095
$3085
$2295
$1995
$CALL
Open 7 days a week
(703) 847-4740 (800) 642-2395
Information and Technology Services, Inc.
Micro Systems Specialists
8478A Tyco Rd., Vienna, VA 22180
Printers Memory Boards
NEC P-6
NEC P-7
NEC P-5
NEC P-5XL
PANASONIC 1080 I
PANASONIC 1091 I
PANASONIC 1092
PANASONIC 1592
STAR LV 1210
STAR NX-15
STAR ND-15 £
STAR NR-15
STAR NB 24-15
STAR SD-10
STAR NX-10
BROTHER 1509
CITIZEN MSP-10
CITIZEN MSP-15
CITIZEN PREMIER 35
TOSHIBA P341
TOSHIBA P351
FUJITSU DLP24
FUJITSU DM91
OKIDATA M182
OKIDATA M192 +
OKIDATA M193 +
OKIDATA M84
OKIDATA 2410
EPSON FX-286
EPSON LX-80
EPSON FX-85
EPSON LQ-800
$465
$670
$1107
$1230
$220
$284
$345
$465
$174
$368
$430
$522
$684
$340
$240
$425
$305
$420
$470
$820
$1212
$1224
$398
$264
$397
$598
$698
$1961
$609
$270
$419
$616
JRAM 2 $129
JRAM 3 ABOVEBOARD $179
JRAM AT $179
JRAM AT3 ABOVEBOARD $239
JLASER MODULE $265
JLASER + AVAIL.
INTEL ABOVEBOARD $438
AST RAMPAGE 512K $485
ORCHD CRAMRAM $291
ZUCKER BOARD $68
AST 6 PAK + W/384 $210
QUADBOARD W/384 $199
Chips
64K 150ns set of 9
64K 120ns set of 9
256K/150ns set of 9
256K/120ns set of 9
64 x 4
128K Piggyback
8087-3
8087-8
80287 6MHz
80287 8MHz
PANASONIC
BUSINESS
PARTNER
FX-600 2DS/DD, 640K
$895
with 1 DS/DD, 20 MB
$1145
(Monitor and Adapter extra)
PRICING SENSATIONS!
20 MB SEAGATE DRIVE $379
30 MB SEAGATE DRIVE $479
SAMSUNG AMBER MONITOR $79
NEW ENHANCED KEYBOARD $79
MONO GRAPHICS CARD $90
OTHER SYSTEMS
BIOS AT 8Mhz
$1769
SPERRY MICRO IT
$1795
IBM XT
$1195
IBM AT
$2395
1800+ AT (EVEREX)
$1195
LAPTOPS and ACCESSORIES
Toshiba T1100 w/640
$1745
Toshiba 3800
$3395
Sharp PC 7000
$995
NEC Multispeed
CALL
Zenith 181
CALL
Panasonic Exec. Partner
CALL
Centronics GLP II Printer
$215
Toshiba Ext Drive
$349
Toshiba 1200 Modem
$336
* Prices subject to change
1/16/87
* 10% re-stock fee on all
items
* Software non-returnable
if opened
► No surcharge on VISA,
MC, CHOICE... AE 3%
Visa, MC, CHOICE, AE
Leasing, Renting &
Financing available
$8
$9
$23
$25
$4
$5
$119
$169
$192
$306
|,! ’'• 7*7 N
IBM® PC Compatible
“Editor’s Choice”
PC MAGAZINE
OCT. 14,1986
The ITS Turbo XT
from Information and
Technology Services
is our “best buy”
recommendation
s 849°°
with complete
20MB and -I
1 floppy I
ITS Turbo XT
1 year warranty
30 day money back guarantee
ITS
TURBO
286
$ 1195°°
• Phoenix ROM BIOS
• Full one year warranty
• 80286 CPU switch select¬
able 6 or 8 Mhz (10 Mhz optional)
• 1.2 MB Floppy Disk Drive
• Supports up to 5 internal ’/> HT drives
• 2 serial/I parallel ports built into chassis
• real time clock • 8 expansion slots
and many more features
• 6/10 Mhz optional $1295
ITS
SYSTEM 386
BLACKHAWK
Available now
$«
s 3995
Features:
, • INTEL 80386 CPU and support
circuits
• Phoenix BIOS
• 18 Mhz clock speed
• PC/AT compatible 8 Mhz switchable
from keyboard
• 512K RAM standard up to
14 megabytes
• Parallel/Serial/Clock
• 8 Slot Expansion bus interface
2-PC Compatible 8 bit bus connectors
2-32 bit bus connectors
• Hard disk/Floppy disk controller
• 1.2 megabyte floppy
oo
2,695°°
SPERRY
PC/IT
Superior to the IBM AT
Rated 8.8 by InfoWorld
44MB, 28ms Access Hard Drive
3 Speed Processor
Free 8 MHz Math Coprocessor
1.2MB Floppy, 640K Ram
2 Serial/I Parallel Ports
Clock/Calendar, AT Keyboard
DOS 3.1 Basic, System Guide
1 year warranty
MARCH 1987
CIRCLE NO. 134 ON READER SERVICE CARD
195
TECH MARKETPLACE
THE COMPREHENSIVE GUIDE TO PRODUCTS AND SERVICES FOR THE MS DOS MARKET
PRODUCT CATEGORIES
HARDWARE_198-199
ACCESSORY CARDS.197
COOLING DEVICES
COMMUNICATIONS
COMPATIBLES.
GENERAL.198
MASS STORAGE.
PERIPHERALS.198-199
SECURITY DEVICES
USED EQUIPMENT .
SOFTWARE 199-205
ACCESSORIES/SUPPLIES.199
ARTIFICIAL INTELLIGENCE.199
BUSINESS.199
COMMUNICATIONS.199
DATA BASE MANAGEMENT.
EDUCATIONAL.
ENGINEERING.199
EXPERT SYSTEMS.199
GENERAL. 199-200
GRAPHICS.200
LANGUAGES.200
MULTI/USER SYSTEMS.
NETWORKING......
SOFTWARE continued
OPERATING SYSTEMS.200
PROGRAMMERS TOOLS.200-202
PUBLIC DOMAIN.202
SCIENTIFIC.202-203
SECURITY DEVICES.203
STATISTICS.; . 203
TAXES.203
TERMINAL EMULATION.203
UTILITIES.203-205
WORD PROCESSING.
MISCELLANEOUS 205
BAR CODING.205
PUBLICATIONS.205
Advertising Rates and Information:
PC Tech Journal Marketplace
PC Tech Journal Marketplace is a special
economical section for product and service
listings.
Listings are grouped by category and sold by
column inches. Second color option
available.
Standard Directory Listings are also available
for a minimum of 3 issues at $170 per issue
($510 total).
For additional information
call 212-503-5115.
PC Tech Journal Classified Advertising Staff
One Park Avenue, New York, NY 10016
(212) 503-5115
Account Managers
Lisa B. Stick (212) 503-5172
Advertising Director
Kathryn J. Cumberlander
Sales Manager
Daniel L. Rosensweig
Sr. Advertising Coordinator
Monica Dixon
Advertising Coordinator
Angela Kiffin
Sales Assistant
Linda Annis
Production Manager
Anne R. Brockinton
(212) 503-5441
Production Coordinator
Elliot Appel
(212) 503-5470
AL, AR. IA, IL, IN. KS. KY, AZ, CO. OR. NM. LA.
ML MN. MO. MS. NB, ND, OH. OK. SD, TN. TX, NV,
AK. GA. UT. CA (ZIP 92999 & DOWN), CANADA
(OTHER THAN BRITISH COL.) AND ALL OVERSEAS
CALLS.
CT, MA, ME, NH, NJ, NY. RI. ID, MT. MD, VT. DC,
DE, HI. NC, SC, FL, VA, WV, WI, PA. WA, WY, CA
(ZIP 93000 & UP) BRITISH COL.
196
PC TECH JOURNAL
HARDWARE/ACCESSORY CARDS
TECH MARKETPLACE
THE COMPREHENSIVE GUIDE TO PRODUCTS AND SERVICES FOR THE MS DOS MARKET
(Mi mm
IN 80386 TECHNOLOGY
SWITCH YOUR SLOW IBM
"AT/XT286" INTO A FAST 386 !!
WITH THE KW386-ET16
FEATURES:
75 TO 250 ’/i FASTER THAN "COMPAQ"
80386 SYSTEM SPEEDS OF 12 TO
24 MHZ AND AT/XT286 BUS SPEED
OF 6 TO 12 MHZ
SELECTABLE 80287/80387 MATH CHIP
SPEEDS AT 8/10/12/14/16 MHZ
HIGH SPEED MEMORY EXPANDABLE
TO 16 MEG ON BOARD
BGI 386 BUS INTERFACE
EXPANSION CONNECTOR ON REAR
OF THE BOARD MILL PROVIDE
COMPATIBILITY WITH "IBM
386/RISC COMPUTER SYSTEMS
KU CPU BOARD WILL TAKE ONE
16 BIT EXPANSION SLOT
BGI
BUILT IN 386 BIOS WILL INTERFACE
WITH,."IBM BIOS" TO PROVIDE 100 7.
SOFTWARE & HARDWARE COMPATIBILITY
COMPUTER DIV. <215)538-3900
CIRCLE 375 ON READER SERVICE CARD
MARCH 1987
197
HARDWARE/ACCESSORY CARDS—PERIPHERALS
TECH MARKETPLACE
THE COMPREHENSIVE GUIDE TO PRODUCTS AND SERVICES FOR THE MS DOS MARKET
Hardware
Accessory Cards
Z80 and HD64180 CO-processors
For PC, PC/AT. Clock speeds to 9mhz. Prices start
at $199.50. Run CP/M-80 software fast. De¬
velop code for Z80/HD64180 with software ICE.
Run Intel ISIS tools. Interface to real world with
iSBX bus devices. High speed communications,
including Apple Talk compatible.
Decmation
2065 Martin Ave. #110
Santa Clara, CA 95050
(408)980-1678
PC ANALYZER
Real-Time debugging package for your PC or XT.
Complete with board and debugging software.
Also allows you to use your own software de¬
bugger. Nonintrusive operation, simple to in¬
stall. Operates with DOS & QNX. Price $995. Free
shipping.
Sofpak Technologies, Inc.
215 Stafford Road, Unit 101
Ottawa, Canada K2H 9C1
(613)726-1908
DIGITAL SIGNAL PROCESSOR
The Model 10 coprocessor board is based on the
16/32 bit Tl TMS 32010 and is designed for ap¬
plications in communications, speech, instru¬
mentation, and numeric processing. A IK
complex FFT takes 90ms. Offered with onboard
12 bit 40 Khz A/D and D/A. Includes all utility
and applications software. $650-$850.
Dalanco Spry
Suite 241 2900 Connecticut Ave. NW
Washington, DC 20008
(202)232-7999
PC-PROMPAK
ROM Expansion for PC!
Aldia systems introduces PC-PROMPAK, a “half¬
sized” PROM/ROM expansion board for IBM and
IBM compatible PCs. PC-PROMPAK will sup¬
port up to six 28-pin JEDEC compatible devices
(ex: 2764,27128,27256,27512,6264, etc.) with
individually selectable address ranges. Prices
start at $125 for single units. Quantity discounts
and OEM arrangements available. MC/VISA.
ALDIA SYSTEMS, Inc.
P.O. Box 37634
Phoenix, AZ 85069
(602)866-1786
IBM-AT SPEEDUP
The High-Performance
Speedlnjector'from Ariel
As the industry's recognized leader in high-performance speedup
products, Ariel has performed extensive research and developed
unmatched experience in this field. Our products offer the complete
solution.
• XCELX 286/287 XPRESS ,m -A Speedlnjector for ALL IBM-ATs. Uses relia¬
ble frequency synthesis for full compatibility and high performance
• 100% variable from 5-13 MHz CPU speed, while running • Mode
switch defaults to standard 6 MHz or fast mode • Hardware reset
switch • Speedup the 80287 independently. Choose from: Stand¬
ard— 1 /* CPU speed, 8, 10, 12, 14, or 16 MHz actual co-processor
speed • Rear mounted • One-year warranty.$ 99.95
• XCELX 286/287 XPRESS + The Speed Utilities The Speedlnjector
with software that will display exact XCELX frequencies • speedup
hard disk by 50% • speedup keyboard reaction time • correct
floppy disk access.$139.95
• FAST 80286-10— For CPU speeds of 10 + MHz.$299.95
• FAST 80287—8, 10,12,14,16 MHz.Call
• FAST RAM 100 8c 120 NS, 128K 8c 256K.Call
• Mil-Spec Crystals—The famous Ariel Crystals. For early ROM ATs.
Available: 16-17-18-19-20-22-24 MHz.$ 19.95
increase
overall speed
up to 300 %
P.O. Box 866-
ORDER HOTLINE:
201-788-9002
Flemington, NJ 08822
CIRCLE 392 ON READER SERVICE CARD
FIXED DISK BIOS/BOOT
FiXT boots from most popular Hard Disks—DA-
V0NG, TECMAR, IOMEGA, GT LAKES, etc. Adds
XT-like BIOS interface to your disk for PC. Se¬
curity, multiple volumes, removable media sup¬
port optional. No-slot plug-in installation. Specify
controller and computer with order. $80-$95. Add
$3 shpg., CA tax.
GOLDEN BOW SYSTEMS
2870 Fifth Avenue
Suite 201
San Diego, CA 92103
(619)298-9349
PC-SPRINT
“ PC-Sprint is the most cost
effective PC Speedup product
on the market."
—Computer Shopper Magazine
• Run your PC, XT or clone
at 7.38 mhz.
• 280% Speedup (Norton
SI rating)
• Speeds up all software—
you can see the difference
• External speed switch
• External reset button
• Change speed “on the fly”
• Compatible with 8087
• Works with all color or
mono displays
• “Slotless” plug-in on most
PCs
• Includes: Selectable top
speed, instructions, war¬
ranty, tool, remote mount
switch, free BBS
subscription
$0095 V20 add SIO. Call for infor-
mation on other products
Exec-PC, Inc.
P.O. Box 11268 Shorewood, WI 53211
(414)242-2173 £33 I
CIRCLE 377 ON READER SERVICE CARD
Tech Marketplace. . .
the comprehensive
guide to products and
services for the MS
DOS market.
Truly Low Cost PC Imaging!
-U '
* 295 °°
— complete —
=IMA GE A CE11=
Video Capture System
• Digitize video from cameras,
tuners, and VCRs directly to
your IBM PC display
• 320 x 200 x 4 levels
• 1.3 sec. full screen capture
• Complete with hardware card,
software, cable, and manual
l odGE F IectronIcs
P.O. Box 338 • Streamwood, IL 60103
^=(312) 837-6553=
CIRCLE 378 ON READER SERVICE CARD
General
VIDEO LAN‘LINK SYSTEM’®
FOR IBM, PC, PC/XT, PC/AT labs. Instructor has
complete control of all trainee computer moni¬
tors. Instructor can 1) transmit image, 2) receive
trainee image or 3) transmit any trainee image
to any/all trainees. Color or mono. Software in¬
dependent. Increases instructor efficiency and
trainee comprehension.
APPLIED COMPUTER SYSTEMS, INC.
3060 Johnstown-Utica Road
Johnstown, OH 43031
1-800-237-LINK
Peripherals
SPEECH SYNTHESIS
SynPhonix: TRUE Unlimited Speech Synthesiz¬
er for IBM-PC/XT/AT/jr & compatibles. This low
power short card includes an SSi263 speech
chip, amplifier and speaker. Software includes
Text-to-Speech, Phonetic Editor, Talking Clock
8< demos. Can be programmed with BASIC and
other languages. Prices start below $200.
S ynPhonix
Electronic Speech Articulator
Artie Technologies
1311 N. Main St.
Clawson, Ml 48017
(313)435-4222
CP/M & 1.2Mb AT ON PC
With MULTI-DISK card & UniForm-PC use 3.5,
5.25 & 8-inch single & double density CP/M
format as DOS diskettes on your IBM PC or XT.
Many MS-DOS formats supported including IBM
AT 1.2 Mb. HP-150 & Data General 1. Over 200
formats. Both MULTI-DISK & Uniform-PC for
$225. Disk drives & adapter cable available.
PS Engineering
P.O. Box 51068
San Jose, CA 95151-5068
1-800-369-2398; 1-800-423-7171 in CA.
198
PC TECH JOURNAL
_ __ _ HARDWARE/PERIPHERALS—SOFTWARE/GENERAL
TECH MARKETPLACE
THE COMPREHEN SIVE GUIDE TO PRODUCTS AND SERVICES FOR THE MS DOS MARKET
Peripherals
EPROM/EEPROM PROGRAMMER
Programs 2716-27512, 25xx, 68764/66 eproms
via RS-232. Also 874x, micros, 28xxA & 52Bxx
eeproms. Automatic Baud rate select, built in
menus, no personality modules. Price: $250.
Mention this ad for free terminal software. 16 BIT
I/O MODULE $75
For control of input or output lines via RS-232.
Use with modems for remote control.
INTELLITRONICS
P.0. Box 3263; Tustin, CA 92680
(714)669-0614
CREATE A DISKLESS PC!
PC-ROMDRIVE allows users to create a “Disk¬
less PC” capable of booting a ROM-resident copy
of MS-DOS and/or user application programs.
PC-ROMDRIVE consists of a PC-compatible
ROM/PROM expansion board and the PC-
ROMDRIVE software. PC-ROMDRIVE is priced
at $195 for single units. Quantity discounts and
OEM arrangements available. MC/VISA
ALDIA SYSTEMS, Inc.
P.0. Box 37634
Phoenix, Az. 85069
(602)866-1786
Software
Accessories/Supplies
Artificial
Intelligence
TURBO EXPERT
Full Scale IBM-PC Expert Systems/Ready To
Consult. $34.95. Runs on all compatibles.
#1. THE STOCK MARKET EXPERT
#2. THE EXECUTIVE HEALTH EXPERT
#3. THE PSYCHIATRY EXPERT
#4. THE TURBO EXPERT TOOLKIT III
Please specify # when ordering.
Thinking Software, Inc.
46-1665 Place
Woodside, N.Y. 11377
(718)429-4922
FOR INFORMATION
OR TO PLACE
YOUR AD
IN
PC Tech Journal
Marketplace
Call
( 212 ) 503-5115
DISK
COPIER
Fast (one minute)
Simple (one button)
Reliable (one board)
$995 (one price)
275 Santa Ana Ct., Sunnyvale, CA 94086
(408) 737-8441
CIRCLE 379 ON READER SERVICE CARD
Business
OPERATIONS RESEARCH
TSA88 Transportation Simplex Algorithm
(up to 510 sources, sinks or trans¬
shipment points)
TNET88 Transportation Network System
(networks up to 510 nodes & 16K
links)
TPR088 Transportation Problem Solver
(shortest path, tours up to 50 stops)
Req. 192K, color graphics adaptor. $99 each w/
8087 support, User’s guide. Write or call for our
brochure.
EASTERN SOFTWARE PRODUCTS INC.
P.0. Box 15328, Alexandria, VA 22309
(703)549-5469
Auto-Pilot™
Put your responsibilities on Auto-Pilot: ToDo list,
sophisticated Tickler file, appointment calendar.
Tracks employee assignments/action items.
Windows display future, present, and uncom¬
pleted past events. Multi-users, multi-files, pe¬
riodic & one time events. DOS 2.0+ PC/XT/AT/
compatible $29.95 Check/Visa/MC
Advanced Concepts
P.0. Box 246
Ironia, N.J. 07845
1 -800 235-6646 Ext 852 1 -800-235-6647(CA)
Communications
PC SERIAL DATA ANALYZER
Use your IBM PC or compatible to analyze data
streams between two serial devices (up to 9600
BAUD). Two windows display each devices
transmission in ASCII or HEX. PC can also act
as a terminal for either device. Invaluable tool for
debugging serial interfaces. Disk & manual $150.
Triple C Software
2897 SW 13th St.
Fort Lauderdale, FL 33312
(305)583-0687
Engineering
ENGINEER’S AIDE
• Pipeline/Ductwork Sizing
• Pump/Fan/Compressor Sizing
• Heat Exchanger Sizing
• Orifice/Control Valve Sizing
• Project Financial Analysis
• Conversion Calculator
• Specification Writer
Pull down menus, Pop-up help windows, Single
Screen entry & results-ALL above for $395 (into
price, $back guarantee). For IBM & MAC.
ENGINEERING PROGRAMMING CONCEPTS
P.0. Box 925
Camarillo, CA 93011
(805)484-5381 In CA. 1(800)367-3585
METAL FABRICATORS
PC/Cultist takes input from your bill of mate¬
rial—Detail drawing and calculates the best
cutting combination for any length stock and
prints a shop ready cutting list and scrap report.
Also an optimization feature finds best multi
length for mill orders. Price $300. Demo Disk
$25 00
THE JOSEPH ALBERT CO.
P.0. Box 611
Blue Island, Illinois 60406
(312)349-9032
FINITE ELEMENT ANALYSIS
MSC, the leader in FEA technology, markets a
full line of FEA tools for personal computers.
Starting at $45 for MSC/pal INTRO on either the
IBM PC or the Apple Macintosh, our products
are designed to be complete and easy to use.
Interfaces for most CAD systems available.
The MacNeal-Schwendler Corporation
815 Colorado Blvd.
Los Angeles, California 90041
(213)259-3888
Expert Systems
CxPERT for Expert Systems
C programmers interested in using expert sys¬
tems technology will love CxPERT. Al features
such as explanations, why, frames, av pairs, le¬
gal values and more are completely compatible
with C. Create executable systems with no roy¬
alties. $165 + $5 s&h. MD add 5%. CK/MO/
Visa/MC. Req. C compiler & DOS 2.0+.
Software Plus
1652 Albermarle Dr.
Crofton, MD 21114
(301)261-0264
General
DOCUMENTATION-BY MAIL’"
Technical writing service specializing in long¬
distance production of economical and timely
manuals for small, medium-sized and large de¬
velopers. Tutorials, user’s guides, reference
manuals. Fixed price contract, professional
quality, quick turnaround. Call for credentials,
sample and free estimate.
BNP Enterprises, Inc.
20370 SW 84 Ave.
Miami, FL 33189
(305)253-2317
GREAT SOFTWARE, CHEAP!
Only $5.95 per disk for absolutely smashing
Shareware and Public Domain programs!
Money-back guarantee. PC-Outline, AutoMenu,
PC-Key Draw, PC-DeskTeam, PC-Write 2.7,
DOSamatic, Utilities Galore plus Databases, Ar¬
cade and Adventure Games. Lots more! IBM PC,
PC jr, and compatibles. Send for free catalog.
SHAREWARE EXPRESS
31877 Del Obispo, Suite 102Q
San Juan Capistrano, CA 92675
(714)240-1322
MARCH 1987
199
SOFI'WARE/GENHRAL—PROGRAMMERS TOOLS
TECH MARKETPLACE
THE COMPREHENSIVE GUIDE TO PRODUCTS AND SERVICES FOR THE MS DOS MARKET
General
PUBLIC DOMAIN SOFTWARE INC
Over 115 volumes of public domain software in
CP/M & MS-DOS formats.
• editors & compilers
• text formatters
• communications packages
• many UNIX-like tools
Write or call for more details.
C Users'
Group
THE C USERS’ GROUP
P.0. Box 97
McPherson, KS 67460
(316)241-1065
TAPE/DISK CONVERSIONS
Conversion services to or from over 500 com¬
puter systems:
• Magtapes
• Micro Computers
• Mini Computers
• Word Processors
• Typesetters
Our conversion capabilities surpass most in the
industry.
Pivar Computing Services, Inc.
165 Arlington Hgts. Rd.#T
Buffalo Grove, IL 60089
(312)459-6010
Graphics
FORTRAN GRAPHICS LIBRARY
GRAFMATIC (screen graphics): 75 MS
FORTRAN/Pascal, R-M/Profort, Lahey FORTRAN
callable subroutines. Fully documented, prof,
graphics capabilities, inc. general utility, 2-D in¬
teractive, total 2-D plots, 3-D plots and solid
models. $135. H-P or H-l plotter? get
PLOTMATIC, complete plotter graphics library.
Interfaces w/GRAFMATIC. $135. Both $240.
MICROCOMPATIBLES, INC.
301 Prelude Drive Dept. J
Silver Spring, MD 20901
(301)593-0683
MetaWINDOW^/TurboWINDOW™
Advanced graphics toolkit provides Xerox Star/
Apple Macintosh style graphics on your IBM PC.
Supports most popular graphics cards. Allows
you to create pop-up menus, windows & icons;
use proportionally spaced fonts; rubberband &
rag lines, text or bitmap images; supports mouse-
cursor tracking. Tightly optimized for use with
Turbo Pascal, IBM Pascal, C, Fortran.
METAGRAPHICS
SOFTWARE CORPORATION
METAGRAPHICS SOFTWARE CORP.
4575 Scotts Valley Drive
Scotts Valley, CA 95066
(408)438-1550
CIRCLE 399 ON READER SERVICE CARD
FORTRAN TOOLS & GRAPHICS
PC-PLT: CALCOMP and VERSAPLOT Compati¬
ble Graphics Package for the Fortran
Programmer. Supports CGA, EGA,
Tecmar and Printer Graphics. $325
PC-TOOLS: 125 Subroutines and Functions
Giving Fortran Programmers
Complete access to the PC. $125
ONTAR Corporation
129 University Road
Brookline, MA 02146-4532
617-739-6607
SCIENTIFIC DATA PLOTTING
SCI-GRAF creates graphs up to 1680 X1712 dots
(over 3 million pixels!) on Epson or IBM graph¬
ics, printers. Supports log scaling, overlays,
point-labeling, legend creation, batch mode,
wide-carriage printers, and color graphs on a JX-
80. Requires DOS 2 or 3,256k. No credit cards.
$99.95
Microcomputer Consultants (MSC)
32 WAnapamu Suite 190
Santa Barbara, CA 93101
(805)963-3412
35mm SLIDE FROM YOUR PC
COMPUTER SLIDE EXPRESS converts graphic
files produced on the IBM PC into brilliant 35mm
color slides with color resolution 400% better
than your monitor. Leave your printouts behind.
Use high resolution color slides up to 4000 line.
COMPUTER SLIDE EXPRESS $9/slide.
VISUAL HORIZONS
180 Metro Park
Rochester, NY 14623
(716)424-5300
Languages
Operating Systems
Real-Time Multitasking Executive
■ No royalties
■ Source code included
■ Fault free operation
■ Ideal for process control
■ Timing control provided
■ Low interrupt overhead
■ Inter-task messages
Options:
■ Resource Manager
■ Buffer Manager
■ Integer Math Library
■ Language Interfaces:
C Pascal
PL/M Fortran
■ DOS File Access :
CP/M-80
IBM PC DOS
| Tas> Schedule) |*~
AMX is TM of KAOAK Products Ltd
CP/M-60 is TM ot Digital Research Corp
IBM PC DOS are TM ot IBM Corp
AMX for 8080 $ 800 US
8086 950
6809 950
68000 1600
Manual (specify processor) 75
Jk KADAK Products Ltd
IF
(604) 734-2796
Telex. 04-55670
206-1847 W. Broadway, Vancouver, B.C., Canada V6J1Y5
CIRCLE 380 ON READER SERVICE CARD
FINALLY! MODULES
Add class to your compiled BASIC programs
with FINALLY! MODULES. Use pull-down
WINDOWS, horizontal menus, pop-up help
screens, input screen and directory mana¬
gers. For use with FINALLY! Library and
Quick Basic 2.0 or IBM compiler 2.0 30 day
MoneyBack guar. Visa/MC/CK/MO. FINALLY!
MODULES is $99.00+ $4.00 s/h.
Komputerwerk Inc. Dept PCT
851 Parkview Blvd.
Pittsburgh, PA 15215
(412) 782-0384
FORTRAN UTILITIES
CROSS-REFERENCE UTILITY: Mainframe grade
symbol x-ref listing for variables, subprogram
calls and labels. Variable map shows type, length,
alloc, scope, usage tag, etc. All FORTRAN 77
compilers. $49.95 + $2.50 s&h. UTILITY LI¬
BRARY: Assembly language routines for screen
cursor, keyboard, time, sound, etc. MS/IBM and
IBM Pro/RM FORTRAN compilers. $39.95 +
$2.50 s&h. IBM PC w/DOS 2.0+. Visa/MC/M0/
check (2 wks).
PJN International
P.0. Box 201363
Austin, TX 78720
(512)837-2888
Programmers Tools
ATTENTION TURBO PASCAL USERS!
Crash the 64K Barrier
TryTURBO PACKAGE now!
90 day money back guarantee!
Modular Programming!
Promotes REUSE of working CODE
CUTS development TIME
IMPROVES system RELIABILITY
SIMPLIFIES program MAINTENANCE
FILL 640KB with code data any way you want
VERY FEW CODE CHANGES.
FASTER than chaining or overlaying
SUPERMATH, FREE!
With purchase of Turbo Package
40 plus LONG (32-bit math) routines
Faster than real - big enough for $.
ASM coding insures top performance
Just S49.95 (in TX add tax)
Visa'MC (no shipping chg)
Write or call for more information
CONVERSATIONAL COMPUTER SYSTEMS
5371 Verbena Rd.
San Antonio. TX 78240
Phone:(512)692-0353
CIRCLE 395 ON READER SERVICE CARD
200
PC TECH JOURNAL
SOFTWARE/PROGRAMMERS TOOLS
TECH MARKETPLACE
THE COMPREHENSIVE GUIDE TO PRODUCTS AND SERVICES FOR T H E M S DOS M A R K E T
Programmers Tools
ROMable CODE on PC!
PCLOCATE allows PC users to develop ROM-
based software from MS-DOS “Exe" files. The
user specifies the physical location of all seg¬
ments. Output files are compatible with most
PROM programmers. PCLOCATE supports the
8086,8088,80186,80188, and 80286 proces¬
sors. MC/VISA.
ALDIA SYSTEMS INCORPORATED
P.0. Box 37634
Phoenix, AZ 85069
(602)866-1786
END YOUR FRUSTRATIONS —
MASTER
YOUR
SCREENS
WITH
FORNIX
Developing, testing & changing
screens is tedious, frustrating,
time-consuming work.
Until now.
With FORMIX, you can trouble¬
shoot before writing one line of
code. You can even prototype
the entire system with actual
screens —complete with data
entry. Little changes in screen
design are little effort. So are
major changes.
Our advance panel-oriented
system allows you to quickly
develop complex screens that
integrate several panels or
windows.
Plus, FORMIX has an on-line
help system. You just write the
application help text. FORMIX
handles the rest.
In short, FORMIX simplifies screen
design and slashes the cost
of program development. Let
FORMIX handle the tedious,
error-prone programming aspects
while you concentrate on solving
today’s application problems —
and eliminating a lot of tomorrow’s.
And there's more. Contact us for
details. We're ready to prove the
power, flexibility & simplicity of
FORMIX.
Master Computer Systems, Inc.
FORMIX Division
9531 West 78 Street
Eden Prairie, Minnesota 55344
612/944-5220
FORMIX inleilaces with ADA. Assembler Bosic C
Cobai Fortran & Pascal
GENSCREENFORMS-COBOL
Cobol Source Code Generator for generating the
screen section and data division cobol source
code for Microsoft and IBM PC cobol. Screen
Image Text files are run through GENSCREEN to
produce all of the source code for your screen in
less than a minute. Super fast programmer pro¬
ductivity tool $69.99.
Personal Computer Development Corporation
P.0. Box 8556
Warwick, R.l. 02888-8556
(401)333-8704
VERSION CONTROL SYSTEM
TUB" stores ALL versions of your source in ONE
compact library file, even with hundreds of re¬
visions. Updates (deltas), 5-7 times faster than
Unix SCCS. Date & comments for each version,
easy retrieval. LAN-shared libraries. Free public
domain MAKE (with source) by Landon Dyer.
DOS 2.x/3.x $99.95 $3 s/h VISA/MC.
Burton Systems Software
P.0. Box 4156-TJ
Cary, NC 27511-4156
(919)469-3068
PASCAL-to-C TRANSLATOR
Industrial strength conversion from Turbo, Mi¬
crosoft, UCSD, MT+, Apollo, Macintosh, and
other Pascals to K&R C. Handles nested proce¬
dures, intrinsic functions, separately compiled
units and modules, all data types including long
integers.
Requires 512K IBM PC/XT/AT. Send up to 500
lines of Pascal and we will convert it for FREE.
Site licensing from $5,000. Conversions 50
cents/line.
TGLInc.
27096 Forest Springs Ln.
Corvallis, OR 97330
(503)745-7476
TURBO FORMS
Bullet-Proof user data entry. Unlimited charac¬
ter & field level data verification. Create & edit
forms for data entry & display without recom¬
piling source code. Flexible formatting with
graphics, windows, colors & display attributes.
IBM PC & compatibles. One of PC Magazines
“14 HOT TURBO UTILITIES’.’ $39.95 including
S&H. MC/VISA or C.O.D.
GREAT LAKES SOFTWARE SYSTEMS, INC.
2510 Capital Ave. SW Suite 203
Battle Creek, Ml 49015
(616)962-2017
SCREEN MANAGER
SAVE TIME! Powerful Screen
Designer and Memory Resident
Screen Manager Increases Pro¬
grammer Productivity! Interfaces
to most languages. BASIC,
FORTRAN, COBOL, C, PASCAL,
PLM86, ASM. Not a Code Genera¬
tor! No Royalties.
The West Chester Group
P.0. Box 1304
West Chester, Pa 19380
(215) 644-4206
$■
125
FREE DEMO DISK
CIRCLE 383 ON READER SERVICE CARD
Fortran Addenda ’86
Libraries for graphics and friendly/interactive
programs. ASMUTIL2: Total PC control; printers
(3), CRTs (2), disks, FULL keyboard, strings,
high-speed gets/puts, line/box, fills tile paint¬
ing, CGA/EGA/Hercules graphics. BUTILE 2: In¬
put wordprocessing/editing, non-overflowing
formats, window management... 100 easy to
program, “smart” routines + defaults/toggles.
170 pg. manual & annotated samples. $95 alone;
both $165. Specify compiler and version.
A IMPULSE
ENGINEERING
IMPULSE Engineering, B.R. Strong, Jr.
P.0. Box 3540
San Francisco, CA 94119-3540
(415)788-4611
FIRMWARE PRODUCTION ON PC
LINK&LOCATE enables PC users to produce
ROM-based firmware for 8086/87/186 from ob¬
ject files generated by C, PL/M compilers &
MASM. Provides full control of segments place¬
ment anywhere in memory. Supports output of
INTEL hex file for PROM programmer, absolute
object file for symbolic debugger & ICE, and MS-
DOS EXE file. Includes an INTEL compatible
linker, locator, librarian and hex formatters. $350.
Systems & Software, Inc.
3303 Harbor Blvd., C11
Costa Mesa, CA 92626
(714)241-8650
pressure monitor display screen
MASCOT network diagram
Andyne
| COMPUTINGLIMITED |
Suite 202, 544 Princess St., Kingston, Ont.
Canada K7L1C7 (613)548-4355
PCMASCOT
Real-Time Multitasking
Kernel for the IBM PC
• Supports MASCOT modular real-time design
methodology
• Extensive built-in debugging facilities
. Shared memory for intertask communication
• Synchronization and mutual exclusion
• Modular design and implementation approach
allows unit and sub-network testing
. Can use DOS DEBUG with application
• Can access all PC-DOS facilities
• C language interface (specify compiler)
. Device drivers may be written in C
• No royalties
• $795 includes software, manual, support,
updates
ON READER SERVICE CARD
PC CROSS-ASSEMBLERS
Up to 10,000 lines per minute! Fast X-ref and
Linker plus Macros and Librarian. Generates
HEX, TEKHEK, S-records, and .OBJ output rec¬
ords. Over 40 micros and XENIX, MS DOS, CPM
80 and ISIS versions. Accepts MOTOROLA and
INTEL directives and Mnemonics.
RELMS"
P.0. Box 6719
San Jose, CA 95150
(408)265-5411
BOOSTERS V2.0 IS HERE!
Tools for Turbo Pascal programmers who need
the speed and efficiency of inline code. 70 +
string, video, and DOS routines—incl. Exec.
V2.0 also incl. powerful new SCREEN GENERA¬
TOR, DOS SHELL, and many example programs.
All Pascal and assembler source, manual, update
notices. No Royalties. S40 + 4% GA tx. Visa/MC.
GEORGE F. SMITH & COMPANY
609 Candlewick Lane
Lilburn, GA 30247, (404) 923-6879
LINK &
LOCATE
LINK & LOCATE
enables PC users
to produce ROM-
based firmware for 8086/87/186 from object files
generated by popular C compilers, such as from
Wizard, Microsoft and Lattice, and MASM assembler
from Microsoft. Provides full control of segment
placement anywhere in memory. Supports output of
Intel HEX file for PROM programmers, Intel OMF
absolute object file for symbolic debuggers and
in-circuit emulators. Includes Intel compatible linker,
locator, librarian and hex formatters. $350.
Systems & Software, Inc.
3303 Harbor Blvd., Cl 1, Costa Mesa, CA 92626
Phone(714) 241-8650 FAX (71 4) 241-0377 TWX 910-695-01 25
CIRCLE 384 ON READER SERVICE CARD
MARCH 1987
201
SOFTWARE/PROGRAMMERS TOOLS—SCIENTIFIC
TECH MARKETPLACE
THE COMPREHENSIVE GUIDE TO PRODUCTS AND SERVICES FOR THE MS DOS MARKET
Programmers Tools
MS-COBOL SCREEN/DATA DIV.
MSCREEN generates Screen Section code for
MICROSOFT/IBM COBOL. Paint/Edit screens.
No other editor needed. Select from complete set
of attributes for each field. No field terminators.
Many other features! COBWORK generates Data
Division code for MICROSOFT/IBM/COBOL. $85.
TAJEVA SOFTWARE
6064 Belle Grove Cove S.
Memphis, TN 38115
(901)365-4692
PRE-PROCESSOR
Add custom features to any language: longer
identifiers, opcode, register and operator syn¬
onyms, nested macros, etc. C Source Code in¬
cluded. Not copy protected. OK to share. $19.95
+ s/h. MC/VISA.
SUPERTECH
11410 NE124 St., #6143
Kirkland, WA 98034-4399
(206)488-9253
Quelo®680jQ0
Software
Development
Tools
Quelo Assembler Packages are
Motorola compatible. Each
package includes a macro as¬
sembler, linker/locator, object li¬
brarian, utilities for producing
ROMable code, extensive in¬
dexed typeset manuals and pro¬
duces S-records, Intel hex,
extended TEK hex, UNIX COFF
and symbol cross references.
Portable source written in “G” is
available. It has been ported to a
variety of mainframes and minis
including VAX.
68020 Assembler Package
For CP/M-86.-68K and MS PC-DOS . $ 750
68000/68010 Assembler Package
For CP/M-80.-86.-68K and MS PC-DOS . $ 595
68000 “C” Cross Compiler
For MS/PC-DOS by Lattice. Inc.
With Quelo 68000 68010 Assembler
Package.$1095
With Quelo 68020 Assembler Package $1250
Call Patrick Adams today:
Quelo, Inc.
2464 33rd W. Suite #173
Seattle, WA USA 98199
Phone 206/285-2528
Telex 910-333-8171
COD, Visa, MasterCard
Trademarks: CP M. Digital Research; MS.
Microsoft Corporation: Quelo. Quelo. Inc.
CIRCLE 382 ON READER SERVICE CARD
BASIC + StruBAS
Developing serious applications in compiled
BASIC? It’s easier with StruBAS v2.0 tools com¬
plementing QuickBASIC and IBM BASIC 2.0 with
extended structured code, screens, menus, na¬
tive ISAM, Btrieve interface, and subroutine ob¬
ject library. $495 single, $1495 site license. VISA/
MC. Not copy protected.
Laney Systems Inc.
3 Office Park Dr., Suite 100
Little Rock, AR 72211
501-225-7755
True Shell for BASIC
SHELL any other program or batch file, includ¬
ing other compiled BASIC programs and the
BASIC interpreter. Requires DOS 2+and IBM (Ver
1 or 2) or Microsoft compiler (QB1, QB2 or 5.36).
QB2 requires DOS 3+. Only $29.95 + $3 s/h.
MC/VISA/COD OK. 30 day money-back perfor¬
mance guarantee.
MicroHelp, Inc.
2220 Carlyle Drive
Marietta, GA 30062
800-922-3383. In GA 404-973-9272
APL Programmers!
Interface C and APL*PLUS with APL2C'“! Speed
up your APL code. Link to C libraries. Includes K
& R C compiler. $195 Complete. FULLSCREEN
Panels™ is here! Screen Generator and full¬
screen processor for the APL environment. Pop-
ups, panels, menus, scrolling fields NO ROY¬
ALTIES, $150.
Lauer Software
PO Box 728
Newtown, PA 18940-0728
(609)921-6249
BASIC Base 007
BASIC database library including menues,
passwords, program generator, query, screen
control, data record control, index commands for
add, delete, find, find next, find last. $15 demo
with disk manual and compiled database soft¬
ware. $99 development system with library
source code and printed manual. $165 for com¬
piled & all 4,000 + lines of BASIC code.
Application Micro Computers, Inc.
1663 Bachan Ct.
Reston, Va. 22090
(703)471-1471 -3:00 to 9:00 P.M.
--;—;-n
Productivity Tools
Software Revision Management System
SRMS is a full featured version control
system featuring:
* 10 Integrated Utilities with user shell
* Capability for hundreds of versions/library
* Merge utility resolves parallel effort conflicts
* Report Generation Utilities
* Typeset documentation and much more!
_ XusMJJL __
QMAKE™
* Program generation utility patterned after
UNIX make to aid in rebuilding sytcms
* Recompiles only routines necessary
* Support for macros and multiple entry points
* Integrates fully with SRMS
_Mn JL2_S22_
TXTTOOLS
• QDIFF - Windowed File Difference Utility
• QSE - Quilt Stream Editor *
• QSRCH - Like UNIX GREP 585
Quilt Computing ($$]
7048 Stratford Road 2221
Woodbury, MN 55125 CIRCLE 396 ON
1(612) 739-4650 READER SERVICE CARD J
FRUSTRATED WITH ASSEMBLER
Unique shareware program adds structure to
assembly language. IBM/MASM compatible.
Develop and debug faster with structured con¬
cepts. IF-THEN-ELSE, SELECT-WHEN-OTH-
HER, DO WHILE/UNTIL/INCREMENTAL and
combinations. LEAVE/LEAVEALL loop exits, and
file includes. Nest 16 deep. $6 disk, $25
registration.
MICHAEL! HOLLAND
8808 Boulder Lane
Little Rock, AR 72207
(501)224-2749
Turbo Pascal Programmers:
15 MINUTES = 200 HOURS!
with new turboMAGIC
code generator.
Input forms and help windows up to 66
lines long. Scrolling within framed win¬
dows for data-entry or help. Pop-up
menus. Pull-down menu systems. And
much more! Just $99. 30-day money-
back guarantee. Requires 256K IBM
PC compatible. Orders: 800-225-3165
|lH Sophisticated Software
6586 Old Shell Road
Mobile, AL 36608
205-342-7026
CIRCLE 397 ON READER SERVICE CARD
“NEW” BIT-LOCK® SECURITY
Piracy SURVIVAL “>4" YEARS proves effective¬
ness of powerful multilayered security. Uses rapid
decryption algorithms and small reliable port for
transparent security device. NOW AVAILABLE tor
PARALLEL or SERIAL port. NEW KEY-L0K'“ se¬
curity device available at HALF-PRICE.
MICROCOMPUTER APPLICATIONS
7805 S. Windermere Circle
Littleton, CO 80120
(303) 798-7683 or 922-6410
Public Domain
TURBO PASCAL " SOFTWARE S6
Write or call for information about:
• Systems & applications development tools
• Programs for home and business
• Communication tools & applications
• Games in specialized applications
• Scientific/engineering programs & routines
• Graphics including animation tools
TURBO S.I.X.
P.0. Box 8373
Waco, TX 76714
(817)753-2182
Tech Marketplace,
the home
of the
power buyer.
NEW PUBLIC DOMAIN LISTING
13,000 MS DOS PROGRAMS with brief de-
scriptions, 52 pages, $4. Also available on disks
for $10 including search program. This months
special set 5 disks $2 including p+h. 90 pro¬
grams including Mandelbrot Set Images, Cal¬
Tech utilities, advanced Lotus tutorial, artificial
art, Freecalc V2, Genealogy V4. Send your card
+ $4 to or call: The Public Domain Software Co.
THE PUBLIC DOMAIN SOFTWARE COPYING
COMPANY
33 Gold Street
NYC, NY 10038
800-221-7372 • NY 212-732-2565
TURBO PASCAL $2/disk
TSS is a BBS-by-mail, no modem needed (long
distance is more $$$ than mails)! 60+ disks of
Pascal files. Most incl. source code. All files
compressed. Membership fee ($25) incl. free
starter pkg. and 2 FREE disks with 1st order. Non¬
members $7/disk. Cat. list $5. VISA/MC/C0D
(s/h extra) (data) 617-545-9131
TURBO SOURCE SEARCH
PO. BOX 876
SCITUATE, MA 02066
(voice) 617-545-6677
Scientific
SCI/ENG GRAPHICS
0MNIPL0T [S] (screen graphics) & 0MNIPL0T
[P] (plotter driver) provide integrated engineer¬
ing/scientific 2-D & 3-D graphics with NO PRO¬
GRAMMING! Menu-driven, flexible, professional.
Choice of formats: tabular/line, contour, bar, pie,
3-D wire frame & much more! 0MNIPL0T [S]
$195. Add 0MNIPL0T [P], both $295.
MICROCOMPATIBLES, INC.
301 Prelude Dr. Dept. J
Silver Spring, MD 20901
(301)593-0683
8087 FFT/VECTOR PROCESSING
The VECT0R87 library is written in assembler,
includes 60 routines to speed up your number¬
crunching programs. Uses 80(2) 87 extensively.
PC IK real FFT takes only 1.2 sec. Versions for
Fortran (MS, RM, Lahey), C (MS, Lattice), Turbo
Pascal -87. $150 per version with source, no
royalties. Write for technical information.
VECT0RPLEX Data Systems Ltd.
136-100 Maitland Place N.E.
Calgary, Alberta, Canada T2A 5V5
(403)248-1250
DATA ACQUISITION & ANALYSIS
‘MEASURE for data acquisition directly to Lo¬
tus 1-2-3*FOURIER PROSPECTIVE II advanced
signal digital analysis ‘Lotus Manuscript &
technical document preparation system*PRIME
FACTOR FFT subroutine library. Call Turbo Pas¬
cal, C, Fortran, Basic. Up to 65,520 data-points.
2D available*Turbo Pascal from Borland
‘TELEVISION for Image Communications
*8087 Coprocessors, all varieties*Dash-16A/D
converter board from MetraByte.
ALLIGATOR TECHNOLOGIES, INC. P.0. Box 11386
Costa Mesa, CA 92627 (714) 662-0660
202
PC TECH JOURNAL
SOFTWARE/SCIENTIFIC—UTILITIES
TECH MARKETPLACE
THE COMPREHENSIVE GUIDE TO PRODUCTS AND SERVICES FOR THE MS DOS MARKET
Scientific
NUMERICAL C SOFTWARE
Computationally stable numerical routines for
scientific C software developers. LINLIB con¬
tains all the basic vector and matrix routines so¬
lutions to equations, LU, QR, Cholesky factors of
matrices, least squares solutions. LINLIB has
splines, B-spline routines, spline interpolation,
spline approximation of data. $150.
INFORMATION AND GRAPHIC SYSTEMS
15 Normandy Court
Atlanta, GA 30324
Call (404) 231-9582
Security Devices
SMART COPY PROTECTION
Attention Software Developers, are you tired of
Copy Protection that:
-is NOT transparent to the user.
-does not allow backups.
-requires I/O plugs or special media.
-doesn’t support hard or cartridge disks,
-makes you pay for every disk protected,
-requires source code changes.
-can be beaten by hardware copy boards.
If so, EVERLOCK can solve these problems for
only $495. Free info & demo disk available.
Az-Tech Software, Inc.
426 Grandview
Richmond, MO 64085
(816)776-8153
SECURE AT/XT/PC
Control system access, data access! FiXT/S.
Control system boot for most popular XT /PC hard
disk controllers. Feature for AT-and-XT-com-
patible HD controllers segments hard disk by
volumes, controls access with passwords, sup¬
ports hard disk expansion. $80 $120+$3 shpg.
plus CA tax.
Golden Bow Systems
2870 Fifth Ave. Suite 201
San Diego, CA 92103
(619)298-9349
Multi-User Security
File access by user at the directory or sub-direc¬
tory level. Protection from unauthorized format¬
ting of specified drives by user. User transparent.
Accounting reports by user and category.
PC-LOCK $90.
ONTAR Corporation
129 University Road
Brookline, MA 02146-4532
617-739-6607
Statistics
RATS! VERSION 2.0
RATS, the best selling Econometric software
package now includes daily & weekly data, a new,
easier to use 500-page manual, & many ad¬
vanced features. Use RATS for time-series &
cross-section regression, including OLS,
ARIMA, VAR, logit, & probit. IBM PC or compati¬
ble. $200. VC/Visa. Call for brochure.
VAR Econometrics, Inc.
P.O. Box 1818
Evanston, IL 60204-1818
1(800)822-8038
P-STAT®
Full mainframe package for IBM PC/XT/AT &
compatibles. Combines data & file manage¬
ment, data display, statistical analysis, report¬
writing & survey analysis in a single package.
4GL programming language, online HELP, menu
or command driven with interactive EDITOR. $95
demo and Site License available.
P-STAT Inc.
471 Wall Street, P.O. Box AH
Princeton, N.J. 08542
Telephone: 609-924-9100
Telex: 466452
STATISTICAL FORECASTING
AUTOBOX, AFSEZF, AUTOBJ, BOXX, MTS and
SIMBOXJ-a complete line of programs for Box-
Jenkins time series analysis and forecasting.
Combine the ultimate in sophisticated forecast¬
ing procedures with unparalleled ease of use. Call
or write for more information-find out why our
users are our best reference!
AUTOMATIC FORECASTING SYSTEMS, INC.
P.O. Box 563 Dept. T
Hatboro, PA 19040
(215)675-0652
If you can buy only one statistics
and forecasting package, choose
the best.
StatPac Gold "
Call for free descriptive brochure:
1 - 800 - 328-4907
WALONICK ASSOCIATES, INC.
6500 Nicollet Avenue S. Minneapolis, MN 55423
(612) 866-9022
CIRCLE 393 ON READER SERVICE CARD
To place your ad
in
Tech Marketplace
call
212 - 503 - 5115 .
All the Stats You Need
BMDP offers the most comprehensive collection
of programs for PCs & mainframes. BMDP has
all the statistics you need. From the simple to
the most sophisticated. Advanced techniques
include time series, survival analysis, log-linear
modeling & more! Hard disk req'd. Call for com¬
plete program details & prices.
STATISTICAL SOFTWARE
BMDP Statistical Software, Inc.
1440 Sepulveda Blvd.
Los Angeles, CA 90025
(213)479-7799
Taxes
Where Does the Time Go?
TUSKER knows! TIME & USAGE KEEPER logs
and reports your computer time; meets and
exceeds IRS requirements for proving tax
deduction.
• Define your own business uses
• 6 reports in any date range for any printer
• Log non-computer time too!
DOS 2.0+. $88. Free brochure. $4 demo disk.
Craig Banning
Route 3, Box 317
Big Pine Key, FL 33043
(305)872-3817
Terminal Emulation
BARR/HASP INTELLIGENT RJE
WORKSTATION
Hardware and software communications pack¬
age for IBM PC, XT and AT. Simultaneously
transmits data to host and receives output di¬
rectly to MVS/JES2, MVS/JES3, VS/RSCS, and
CDC/N0S, bypassing TSO and CMS. Emulates
IBM 3777-2 and HASP on IBM 360/20. Line
speed: 1,200 to 19,200 baud (56,000 bps on AT).
Supports multiple high-speed printers beyond
2,400 Ipm. (6,000 Ipm on AT). Features:
concurrent DOS, LAN support, printer forms
control, plotter support, unattended operation,
easy installation. $1,290 includes Hardware
& Software.
B4RR
BARR SYSTEMS, INC.
2830 NW 41 st Street, Building M
Gainesville, FL 32606
(800)-BARR-SYS/(904) 371-3050
Utilities
TallScreen—DOS POWER
Natural extension of DOS. Scroll back through
screen output, edit text on full screen, mark blocks
to printer or file, recall commands & directories,
enter multiple commands, capture screens from
application programs, create user profiles. Solid
tech support. PC MAG & PC WORLD calls
TallScreens a Real bargain at $49.95. VISA/MC
8314 Thoreau Drive
Bethesda.MD 20817
(301)469-8848
SAVE THAT SCREEN!
Do you immediately reach for the PrtSc key to
save screen info? What a waste of time and pa¬
per! Now, UCREENSNAP' M lets you save and re¬
call up to 9 screens at the touch of a key. Friendly
with other r isident programs but unlike some it
is compact; will run in as little as 5K. Also in¬
cludes useful utilities to save and recall from files,
programmer’s interface and sample code. Build
your own help screens with your text editor, then
save and recall them with SCREENSNAR $39.
Programming ARTS
P.O. Box 219
Milltown, NJ 08850
Call 800-443-4160; NJ (201) 846-7242
DOCUMENTATION MANAGER
Create and maintain manuals - procedure man¬
uals, program documentation / system user
manuals, etc. * Edit files with the excellent Nor¬
ton Editor (included) * Save User Defined con¬
figuration * Save screen dumps to files * Variety
of Print Options *
$69.95 complete MasterCard/Visa
YJ)
Xhenix
PHENIX HOSPITAL SYSTEMS
1616 Palm Avenue
Deland, FL 32724
(904)736-1132
AT/XT/PC HARD DISK EXPANSION
“Replace hard disk with a bigger one, or add a
second drive! Vfeature BREAKS THE 33 MBYTE
BARRIER on standard AT, XT, and compatible
hard disk controllers. Includes multiple vol¬
umes, security features, selectable clusters,
keyboard lock. $80-$120 + $3 shipping + CA
Tax”
Golden Bow Systems
2870 Fifth Avenue, Suite 201
San Diego, CA 92103
(619)298-9349
MARCH 1987
203
SOFTWARE/UTILITIES
TECH MARKETPLACE
THE COMPREHENSIVE GUIDE TO PR O D U C T S AND SERVICES FOR THE MS DOS M A R K E T _
Utilities
LIMSIM
Expanded Memory Simulator for the PC/AT and
compatible 286 machines. Use the extended
memoiy you already have as Lotus style Ex¬
panded Memory. Fully supports EMS version 3.2.
Requires 70k of conventional memory. $50 ($75
with assembler source) plus $5 s/h. 30 day
money back guarantee.
Larson Computing
1556 Halford Ave. #142
Santa Clara, CA 95051
(408)737-0627
DISK UPGRADE BIOS for ATs
DUB-14 overides AT Drives Table to allow any
compatible drive to be attached and fully used
on the standard AT controller. Two ROMs plug
into empty sockets on system board. Includes
complete Set-Up routine and low-level format
facility. Works with UNIX, XENIX, other OS and
networks. $95 + $3 shpg. CA tax.
GOLDEN BOW SYSTEMS
2870 Fifth Avenue, Suite 201
San Diego, CA 92103
(619)298-9349
HARD DISK EXPANSION!
Disk Manager allows the installation of any
ST506 hard disk on PC,XT,AT and compatibles.
Volumes up to 256mb! Menu driven/auto in¬
stall, compatible w/ all vers of MS/PC DOS (does
not modify DOS), up to 16 volumes, easy to use!
$125+ ship. Ask about Novell product! Dealer
inquiries invited.
QNTRPCK
COMPUTER SYSTEMS INC.
Ontrack Computer Systems, Inc.
6222 Bury Drive
Eden Prairie, MN 55344
(612)937-1107
DISK ACCELERATOR V2.0
DiskCache speeds up your hard disk access. Disk
caching and ram disk in one package. Ram disk
shares cache space. Transparent, flexible, con¬
figurable, no h/w changes. RAM, EMS, and AT
extended memory versions incl. Not copy pro¬
tected. VISA, MC, volume discounts. No PO’s
w/o prior approval. $49.00
Datamorphics Ltd.,
PO. Box 820
Stittsville, Ontario, Canada KOA 3G0
Or call (613) 836-2670
FILE PRINT MANAGER
GLISTER™
★ Use DOS wildcards to build a list of up to 100
files to print
★ Save/restore file lists
★ Restart a file on any page after a printer jam
★ Print multiple copies
★ Control: margins, line/page length, spacing,
user-formatted header/footer lines and more
★ Prints files as fast as printer is capable $49
Programming ARTS
P.O. Box 219
Milltown, NJ 08850
Call 800-443-4160; NJ (201) 846-7242
VCACHE GETS YOUR DISK
MOVING!
Hard disk accelerator increases speed of car¬
tridge and fixed disk operations using memory
caching to eliminate repetitive disk access. Al¬
locate up to 15Mb of extended or expanded
memory, or .5Mb of standard memory for cach¬
ing disk data. Includes diskette and screen ac¬
celerator modules. Automatic and transparent
after installation. $65+ $3 shpg, CA tax.
GOLDEN BOW SYSTEMS
2870 Fifth Avenue, Suite 201
San Diego, CA 92103
(619)298-9349
PC Tech Journal
Marketplace:
Kathryn J. Cumberlander
Classified Advertising
Director
Daniel L. Rosensweig
Classified Sales
Manager
Lisa B. Stick
Account Manager
Call: (212) 503-5115
CHARACTER CUSTOMIZATION
CHARGENI 3.0 works with the IBM/EGA to let
you modify the character set, allowing many
wordprocessors to display technical material,
equations or other special characters. Requires
DOS 2 x or 3.x, IBM Standard or Enhanced
Graphics Adapter. $35+ $2 s/h (MN add 6%).
DK Micro Consultants
P.O. Box 6714
Minneapolis, MN 55406
(612)722-0931
THE NEWMAN UTILITIES
50 utils includes help system below and disk +
system utilities $19.95
EZRUN menu. Run 1-36 programs $19.95
CACHER. speedup disk access 10X $19.95
HELP system for DOS 3.1 + add your own $9.95
All $45, $2 demo, 15 day MB guar., $2 Ship
NEWMAN COMPUTER
2 Briar Mills Drive Suite 2-A
Bricktown, NJ 08724
(201)458-5169
that created
CopyWrite
Now you can debug your own programs
with a professional quality debugger -
the one that unraveled every form of
copy-protection used on the PC.
With the Quaid Analyzer, you can:
□ See occurences of any interupt, with its
meaning shown on the screen.
□ View memory as text or instructions,
scrolling as easily as you do with an editor.
□ Run until a memory location or I/O port is
changed.
□ Protect your hard disk from accidental
destruction.
□ Analyze software without the source, even
when it uses countermeasures to thwart
tracing.
□ See all stages of the boot load.
We kept the Quaid Analyzer off the
market to avoid helping publishers with
copy-protection. Now that copy¬
protection is gone, we can sell it to
you.
The Quaid Analyzer is a software tool occupying lOOK bytes. It
runs on any IBM PC and most MS-DOS systems without hard¬
ware modification.
Quaid Software Umited
$99 U.S. jdAt Can (416) 961-8243
All orders shipped at^iyMB^ or write to:
our expense within a 45 Charles St. East
day. All major credit Third Floor, Dept. 602
cards accepted. Toronto, Ontario. M4Y 1S2
Ask about Disk Explorer the program that takes over
where Quaid Analyzer leaves off.
CIRCLE 387 ON READER SERVICE CARD
204
PC TECH JOURNAL
SOFTWARE/UTILITIES—MISCELLANEOUS/PUBLICATIONS
TECH MARKETPLACE
THE COMPREHENSIVE GUIDti TO PRODUCTS AND SERVICES FOR TH E M S DOS MARKET
So ftwar e/Utilities
XT/AT HARD DISK DIAGNOSTICS!
Disk Manager Diagnostics performs extensive
tests on your ST412/506 hard disks. Areas tested
are: Controller, data write/read, seek test, auto¬
matic error correction(ECC), random reads and
media defects. Interactive help. Excellent error
detection and isolation. $49.95 + ship. VISA/MC
accepted.
©NTRflCK
COMPUTER SYSTEMS INC.
Ontrack Computer Systems, Inc.
6222 Bury Drive
Eden Prairie, MN 55344
(612)937-1107
MAKE YOUR PC
SEEM LIKE AN AT!
MAKE YOUR AT
SEEM LIKE A
DREAM MACHINE!
WANSI-
CONSOLE"
The Integrated Console Utility ™
FAST, POWERFUL
ANSI.SYS REPLACEMENT
For the IBM-PC, AT, and clones
New Version 2.00 is MUCH FASTER
Now blink free scrolling on CGA!
Now use EMS for scroll recall!
New option menu program!
•Speed up your screen writing
•Extend your ANSI.SYS to full VT100
•Scroll lines back onto screen
•Save scrolled lines into a file
•Add zip to your cursor keys
•Free your eyes from scroll blinking
•Easy installation
•Get 43 line EGA support
•Over 50 useful options
“The psychological difference is
astonishing” -Lotus June 85 pg 8.
“So many handy functions rolled into
one unobtrusive package”
PC-World Feb 86 pg 282.
“The support provided by the
publishers is extraordinary.”
■Capital PC Monitor May 86 pg 25
“...the best choice for improving your
console...”
•Capital PC Monitor June 86 pg 282.
460p Manual (w/slip case)
and software diskettes $75.
Satisfaction Guaranteed!
Order Yours Today!
HKRSEY MICRO CONSULTING
Box 8276, Ann Arbor, Ml 48107
(313) 994-3259 Visa/MC/Amex
DEALER INQUIRIES INVITED
CIRCLE3880N READERSERVICECARD
AT’s DON’T NEED 360KB DRIVES
The 1.2MB drive has long been known to READ but NOT reliably
WRITE on 360KB floppies. With “CPYAT2PC” 1.2MB drives CAN
reliably WRITE 360KB floppies saving a slot for a second hard
disk or backup tape. “CPYAT2PC” (Not Copy Protected) offers
the preferable SOFTWARE SOLUTION.
• NO software or hardware modification
• A 360K drive is NOT required
• “CPYAT2PC” program MAY reside on hard disk
• Runs on IBM PC/AT and COMPATIBLES
i.e. Compaq Deskpro 286/386, AT&T 6300 + ,
HP Vectra, Sperry PC/IT, Tandy 3000
Only $79.00 + $4.00 S/H VISA, MC, COD, UPS-B/R
ORDER TOLL FREE 1-800-621-0851 XT777
TELEX EZLINK 62873089
I visa 9 Dealer Inquiries Invited
1 MICROBRIDGE COMPUTERS
655 Skyway #125
San Carlos, CA
CA 415-593-8777
NY 212-334-1858
CIRCLE 386 ON READER SERVICE CARD
Introducing ARC. It’s used to create and main¬
tain data file archives for computers operating
under any DOS system. .
But it does something that other archive
and library utilities cant It automatically
squeezes the files being saved so they
take up less space. Like a can of con¬
centrated orange juice.
From 20% to 90% less, depending on
the kind of data being saved!
So thereb more room to store data,
no matter what media it’s stored on! And
that’s like giving a shot of vitamin C to
your savings on equipment and supplies.
This compressed data can be trans¬
mitted over telephone lines in a lot less ^ mnr .
time than it takes to transmit uncom- n sfff
pressed data. So you can beat the high WM
cost of phone bills to a pulp, as well.
ARC has a full range of functions for archive
creation and maintenance. Including password
encryption to protect data from unauthorized use.
_Typi cal Compre ssion Rates
I ASCII I
Program
© JW 0
System Enhancement Associates • 21 New Street, Wayne, NJ 07470 * (201) 473-5153
CIRCLE 389 ON READER SERVICE CARD
Tech Marketplace ... the
comprehensive guide to
products and services for the
MS DOS market.
Miscellaneous
Bar Coding
$99 BAR CODE READERS
We need Distributors & OEMs worldwide. Our
readers are IBM PC/XT/AT & Tandy 1000/2000
keyboard compatible, convertible to RS232 In¬
terface, have auto code distinction, need no ad-
ditional software and are availabe from
assembled board to fully packaged units. From
US $99 plus wand in modest OEM quantities.
ASP MICROCOMPUTERS
P.0. BOX 259, CAULFIELD EAST 3145
VICTORIA, AUSTRALIA
PHONE 011 61 3 5000628 (note time difference)
BAR CODE READERS
• IBM, AT&T, Link, Kimtron, TeleVideo,
• Alloy, DEC keyboard interfaces or RS-232C
• Need others? Call.
• NO programming. Reads dot matrix
• Auto-recognition and single code decoding
• Reads Code 39, UPC A/E, Codabar & 1 2 of 5
• Units in stock, 2 year warranty
• Bar code printing software, call for info
2190 W. 11th
Eugene, OR 97402
(503)344-1189
The BEST
BAR CODE READER
for the IBM PC&AT
$595
Simple & quick installation
No additional software or port
Metal wand & case
Also available:
Bar code printing software
Magnetic stripe readers
Units for other computers & terminals
TPS ELECTRONICS
4047 Transport Street
Palo Alto, CA 94303
Telephone: 415-856-6833
Telex: (Graphnet) 371-9097 TPS PLA
CIRCLE 394 ON READER SERVICE CARD
Publications
AN INVITATION TO STEAL
Bad copyright—or none at all? Your software may
be public domain. Protect your work before you
show it. Learn how to copyright software inex¬
pensively and effectively. Software Copyright
Guide. $6 ppd.
Innovation Press
Dept. 112
Box 351
Highland, IL 62249
MARCH 1987
205
INDEX TO ADVERTISERS
PC TECH JOURNAL MARCH 198'
READER
SERVICE NUMBER ADVERTISER PAGE
103 ACS International.149
116 Advanced Logic Research. Cover 3
153 Aker.158
106 Aldebaran. 179
118 American Small Business.184
136 Arity Corporation.136
206 ATI..155
122 Arrix.Ill
* AST Research, Inc.62
126 AST Research, Inc.165-167
203 Atron..8
249 Atron.16
238 Atronics.89
165 Attachmate.151
105 Barrington Systems.117
147 Barr Systems.64
* BC Associates.194
104 Blaise Computing..19
* Borland Int’l. Gatefold Cover
254 Borland Int’l.1
117 Burr-Brown Corp.173
* Business Engrg. Systems.192
111 Catamount Corp.125
188 Century Software. 148
114 ComCal..— 56
* Creative Programming Consultants.86
145 Cresent Software.168
167 Crosstalk Communications.... Back Cover
261 Custom Software Systems.138
217 CXI.....137
107 Data Light.39
214 Desktop Ai. 180
123 Digi Data...126
131 Ecosoft..162
190 ESP Software.171
112 Evsan Co.194
119 FairCom..97
♦ Flagstaff Engineering.116
READER
SERVICE NUMBER ADVERTISER PAGE
199 Galacticomm, Inc.22
* Gimpel Software.124
113 Haven Tree Software Limited.20
132 Hawaiian Village.190
149 Ibex Computer Corp.168
210 I-Bus Systems...174
134 Information Technologies.195
138 Information Technology.82
135 Innovation Computer.178
108 Innovative Data Tech.154
216 Intel Corp..44 & 45
209 Interactive Microware.168
139 Isogan... 112
258 KADAK Products. 180
148 Kurtzberg Computer Systems.175
128 Lahey Computer Systems, Inc.80
160 Lattice, Inc...127
173 Lifeboat Assoc. 99
229 LOGITECH Inc.113
125 Lugaru... 172
110 Macmillan Software.153
263 Mansfield Software.162
207 Mark Williams Co...119
146 MDS, Inc... 163
259 MetaWare, Inc...180
211 Micro Data Base Systems.54
257 MicroHelp, Inc.106
* Microsoft Corp...21
121 Microsoft Corp...30 & 31
205 Microsoft Corp.26 & 27
140 Microsoft Corp.—.. 28 & 29
237 Microsoft Corp....—. 23
* Microsoft Corp.. 74
* MicroTech....—..88
* MicroWay............189
174 Mortice Kern... 161
224 Nantucket Corp.139
191 Norcom.164
109 Novell. 176
222 Opt-Tech Data Processing.4
200 Oregon Software... 58
185 Overland Data, Inc.........132
230 Paradise Systems.6 & 7
101 Paul Mace Software.130
* PC Brand.140-143
159 PC Designs. 191
150 PCs Limited.12 & 13
202 Peripheral Marketing. 173
215 Perisope Company.5
175 Programmer’s Connection.41-43
143 Programmer’s Paradise.193
220 Programmer’s Shop.46
162 Programmer’s Shop.24 & 25
183 Proteus.192
READER
SERVICE NUMBER ADVERTISER PAGE
166 Raima Corp.11
157 Rainbow Technology.180
171 Ram Explosion..194
181 Rational Systems.109
137 Ryan-McFarland.187
* Scantel Systems Ltd.194
187 Scientific Endeavors.125
201 SoftCraft Inc.2
186 Soft*Rite.108
142 Software Garden. 93
196 Software Link.52
168 Software Masters.170
120 Software Merchants..;.125
189 Software Security.98
144 Software Solutions.100 & 101
130 Solution Systems. 14
177 Stargate Technologies..168
198 Sterling Castle. 150
176 Storage Dimensions.164
195 Summit Software..68 & 69
158 Sunny Hill Software..152
184 Sunny Tech Inc.190
231 Systems & Software.134
194 Tall Tree Systems.35
197 Tall Tree Systems.37
155 Telebyte. 18
156 Unify Corp.133
169 Upper Bound Micro Computer.129
115 Vermont Creative Software.17
204 Video 7.135
124 Wells American.107
206
PC TECH JOURNAL
INDEX TO PRODUCTS
RS#
PRODUCT
ADVERTISER
PAGE
IBM AND COMPATIBLE PCS
116
126
159
150
The PC2/286
AST PC
GV 386
Mail Order
Advanced Logic Research
AST Research .
PC Designs, Inc.
PC’s Limited .
...Cover 3
.. 165-167
.191
.12&13
183
124
Compatible
A * Star
Proteus Technology Corp.
Wells American .
.192
.107
MULTIFUNCTION/MEMORY CARDS
I-Bus IQ 188 Parallel Processor Ibus Systems .174
Inboard 386/AT Intel Corporation .44&45
Fastcard Peripheral Marketing, Inc.173
RT Board TallTree Systems .37
GRAPHICS CARDS
ACS 1000/ET286
EGA Wonder
Professional Image Board
LEO
Auto Switch EGA
Vega Deluxe
ACS International .149
ATI Technologies . 155
Atronics International Inc.89
Innovative Data Technology .. 154
Paradise Systems .6 & 7
Video Seven . 135
MASS STORAGE HARDWARE
9 Track Tape System
9 Track Tape System
9 Track Tape System
9 Track Tape System
Tapelinx/Fmance
Perstor 200 {
Multifunction Storage
The Eagles Series 1
Catamount Corporation .125
DigiData .126
Flagstaff Engineering .116
Ibex Computer Systems .168
Overland Data, Inc.132
Systems and Software .134
Telebyte .18
Upper Bound Micro .129
PRINTERS-PLOTTERS
194 J Laser Plus
DATA ACQUISITION
Tall Tree Systems .35
117 DMA Plug in Carrier Board Burr-Brown Corporation .173
209 Catalogue Interactive Microware .168
PRODUCT
PROGRAMMER’S TOOLS
Source Print
Micro DCF
PC Probe
Mini Probe
C Tools Plus
Vitamin C
Quick Pak
PC/VI
C Compiler
dbx translator
R-Tree/C-Tree
PC-Lint
Flowchart
C-Tree Query
Programming Tools
Epsilon
Help/Control
386 Compiler
C Cross Compiler
MACH 2
Windows Toolkit
Screenio
Qpt-Tech Sort
Mace Utilities
Periscope
Mail Order
Instant-C
BTrieve
Demo Program
Visible Computer
Turbo Professional
Taskview
Windows for C
SOFTWARE UTILITIES
254 Sidekick, Traveling Side Kick
254 SuperKey, Turbo Lightning
254 Lightning Word Wizard
114 Bookmark
190 Command Plus
139 Easy Path
191 Screenio
101 Mace Utilities
176 Speedstar
ADVERTISER
Aldebaran . 179
Arrix Logic Systems .Ill
Atron .8
Atron .16
Blaise Computing .19
Creative Programming Cons.86
Crescent Software .168
Custom Software Systems .138
Data Light .39
Desktop AI .180
FairCom .97
Gimpel Software .124
HavenTree Software .20
Kurtzberg Computer System .175
Lattice, Inc...127
Lugaru Software .172
MDS, Inc.163
MetaWare .180
Micro Tech Research . 88
MicroHelp, Inc.106
Microsoft Corporation .74
Norcom .164
Opt-Tech Data Processing .4
Paul Mace Software .130
Periscope Company .5
PC Brand . 140-143
Rational Systems .109
Softcraft .2
Software Garden .93
Software Masters .170
Sunnyhill Software .152
Sunnyhill Software .152
Vermont Creative .17
Borland Int’l .Gatefold Cover & 1
Borland Int’l.Gatefold Cover & 1
Borland Int’l.Gatefold Cover & 1
Corneal . 56
ESP Software .171
Isogon .112
Norcom .168
Paul Mace .130
Storage Dimensions .164
MICRO-MINI MAINFRAME COMMUNICATIONS
PCOX 5250 Prods. CXI .137
The Block Software Security .98
GRAPHIC SOFTWARE
GRAPH C
Scientific Endeavors Corp.125
LOCAL AREA NETWORKS
3-N-l Attachmate Corporation .151
9 Track Tape Systems Ibex .187
Link Up, LAN Gateway Information Technologies .82
LANscreen, LANbasic, LANbasic Soft’Rite ....108
OTHER COMMUNICATION HARDWARE
Galacticomm Breakthrough Galacticomm, Inc.22
LAN Report Novell, Inc.176
Strgate OC3000 Stargate Technologies .168
DATA BASE MANAGEMENT SOFTWARE
Magic PC Aker .
Magic PC
Reflex, The Analyst
Reflex Workshop
Knowledgeman 2
Db Vista
DataEase
Unify
Aker .158
Borland Int’l.Gatefold Cover & 1
Borland Int’l.Gatefold Cover & 1
Micro Data Base Systems .54
Nantucket Corporation .139
Raima Corporation .11
Software Solutions .100 & 101
Unify Corporation .133
OTHER COMMUNICATION SOFTWARE
Term Century Software
Term
Crosstalk
Galacticomm Breakthroui
LANscreen, LANbasic, LA]
Multi Link Advanced
Century Software .148
Crosstalk Comm.Back Cover
Galacticomm .22
Soft*Rite .108
Software Link .52
OPERATING SYSTEMS
AMX Multitasking Exec.
MKS Tool Kit
KADAK Products Ltd.180
Mortice Kern Systems, Inc.161
LANGUAGES
Prolog Compiler
Clarion
Turbo Pascal, Gameworks
Turbo Database Toolbox, Prolog
Turbo Editor, Editor Toolbox
Turbo Graphix Toolbox
ECO-C88-Microstat
Marshal Pascal
F77L Lahev Fortran
Best New Programs
Modula 2
Personal REXX
Let’s C
Quick Basic II
Language Newsletter
Microsoft C
Microsoft Assembler (MASM)
Microsoft Fortran
Pascal Compiler
Brief
Better Basic
Arity, Inc.136
Barrington Systems, Inc.117
Borland Int’l.Gatefold Cover & 1
Borland Int’l.Gatefold Cover & 1
Borland Int’l.Gatefold Cover & 1
Borland Int’l.Gatefold Cover & 1
Ecosoft Inc.162
Innovation Computers .178
Lahey Computer Systems .80
Lifeboat Associates . 99
Logitech Inc. 113
Mansfield Software .162
Mark Williams Co. 119
Microsoft Corporation .30 & 31
Microsoft Corporation . 21
Microsoft Corporation .28 & 29
Microsoft Coiporation .23
Microsoft Corporation .26 & 27
Oregon Software .58
Solution Systems .14
Summit Software . 68 & 69
SECURITY DEVICES
Software Sentinel
MAILORDER
Mail Order
Mail Order
Mail Order
Mail Order
Mail Order
Mail Order
Mail Order
Mail Order
Util., Edit, Funct., Graphics
Mail Order
Mail Order
Mail Order
Mail Order
Mail Order
Rainbow Technologies, Inc. .180
BC Associates .194
Business Engineering Syst.192
Evsan Company .194
Hawaiian Village Computer .190
Microway .189
PC’s Limited .12 & 13
Programmer’s Connection .41-43
Programmer’s Paradise .193
Programmer’s Shop .46
Programmer’s Shop .. 24 & 25
Ram Explosion .1 94
Scantel Systems Ltd.194
Sunnytecn, Inc.190
MARCH 1987
207
MARCH
March 15-20
GUIDE 67
Anaheim, CA
Sponsor: guide International
Contact: Bill Reinberger,
guide International, 111 E.
Wacker Drive, Chicago, IL
60601; 312/644-6610
March 17-19
Reliability in Distrib¬
uted Software and Data¬
base Systems
Williamsburg, VA
Sponsor: ieee-cs
Contact: Edwin C. Foudriat,
NASA, Langley Research Cen¬
ter, Information Systems
Division, MS 469, Hampton,
VA 23665; 804/865-3535
March 17-19
Optical Storage of Docu¬
ments and Images
Washington, DC
Sponsor: Rothchild
Contact: Rothchild Consul¬
tants, 256 Laguna Honda
Blvd., Sail Francisco, CA
94116-1496; 415/681-3700
March 22-26
Computer Graphics ’87
Philadelphia, PA
Sponsor: National Computer
Graphics Association
Contact: NCGA, 2722 Merri-
lee Drive, Suite 200, Fairfax,
VA 22031; 800/225-6422; in
Virginia, 703/698-9600
March 23-27
Theory and Practice of
Software Development
(TAPSOFT’87)
Pisa, Italy
Sponsor: University di Pisa
Contact: Pierpaolo Degano,
Dipartimento di Informatica
Universite di Pisa, Corso Ita¬
lia, 40 1-56100 Pisa, Italy
March 30-April 2
Ninth International
Conference on Software
Engineering
Monterey, CA
Sponsors: acm sigsoft
(Software Engineering)
and ieee-cs
Contact: William E. Riddle,
Software Design and Analy¬
sis, 1760 Bear Mountain
Drive, Boulder, CO 80303;
303/499-4782
March 31-April 3
ANSYS 1987 Conference
and Exhibition
Newport Beach, CA
Sponsor: Swanson Analysis
Systems, Inc.
Contact: Swanson Analysis
Systems, Inc., Johnson Road,
P.O. Box 65, Houston, PA
15342-0065; 412/746-3304
March 30-April 3
Robotics and Automation
Raleigh, NC
Sponsor: ieee-cra
Contact: Harry Hayman,
738 Whitaker Terrace,
Silver Spring, MD 20901;
301/434-1990
APRIL
April 1-3
Database Systems for
Office Automation,
Engineering, and Sci¬
entific Applications
Darmstadt, West Germany
Sponsor: Gesellschaft fur
Informatik
Contact: H.-J. Schek, Tech-
nische Hochschule Darm¬
stadt, Fachgebiet Datenver-
waltungs-systeme I, Fachbe-
reich Informatik, Alexander-
strape 24, D-6100 Darmstadt,
West Germany
April 5-9
CHI + GI ’87
Toronto, Ontario, Canada
Sponsor: ACM
Contact: Wendy Walker, chi
+ gi ’87, Computer Systems
Research Institute, University
of Toronto, 2002-10 Kings
College Road, Toronto,
Ontario, Canada M5S 1A4;
416/978-5184
April 8-10
Mathematical Founda¬
tions of Programming
Semantics
New Orleans, LA
Sponsor: ACM
Contact: ACM, 11 W. 42nd
Street, New York, NY 10036;
212/869-7440
April 9-10
Advanced SPSS/PC+
Austin, TX
Sponsor: SPSS Inc.
Contact: SPSS Inc., Training
Department, 444 N. Michigan
Avenue, Chicago, IL 60611;
312/329-3557
April 9-10
A Manager’s View of Ex¬
pert Systems Building
Atlanta, GA
Sponsor: Georgia Institute
of Technology
Contact: Deidre Mercer,
Department of Continuing
Education, Georgia Institute
of Technology, Atlanta, GA
30332-0385; 404/894-2547
April 21-24
PERSCOMP ’87
Sofia, Bulgaria
Sponsor: Bulgarian Academy
of Sciences
Contact: Dr. Marcel Israel,
ITKR/BAN, 113 SOFIA/BULGARIA,
Acad. G.Bonchev Str., bl.2
April 22-24
AI’87
Long Beach, CA
Sponsor: Tower Confer¬
ence Management
Contact: Jim Hay, Show
Manager AI’87, TCM, 331
W. Wesley Street, Wheaton,
IL 60187; 312/668-8100
April 27-29
Symposium on Security
and Privacy
Oakland, CA
Sponsors: ieee-cs and iacr
Contact: Virgil D. Gligor, De¬
partment of Electrical Engi¬
neering, University of Mary¬
land, College Park, MD
20742; 301/454-8846
CALL FOR PAPERS
Deadline:M&‘cfc3°
International Confer¬
ence on Information
Systems
Pittsburgh, PA
(December6-9, 1987)
Sponsors: Society for In¬
formation Management
and the, institute for
Management Sciences
Submit papers tb: Charles
H. Kriebel, Graduate
School of Industrial Ad¬
ministration, Camegie-
Mellon University, Pitts¬
burgh, PA 15213
208
PC TECH JOURNAL
ILLUSTRATION • DAVID PO>
Advanced Logic Research Gi
You Everything a Mail Order
House Can’t_at the Same Price
See and Feel Your ALR Computer
Before You Buy It.
If you’ve been thinking that the only way
to get into a low-cost compatible PC is to
make a blind purchase from a mail-order
house, THINK AGAIN. Today’s best value
in Personal Computers comes from your
local Advanced Logic Research Dealer!
You can see and feel your ALR PC before
you buy it. You can talk to an expert who
can make qualified recommendations and
take the time to custom-fit an ALR system
to your particular needs.
Thke a look at ALR’s DART and DART
012 systems. DART offers the best 286
technology in a high performance, low-cost
personal computer. The DART 012 blows
the lid off of PC performance with true
12MHz speed and 0 wait state.
Before you make a blind purchase ,
Think Again.
You Don't Need To Buy
A Memory Card
The most intelligent PC designs to date,
DART systems include LIM/EMS support
(Lotus® /Intel® /Microsoft® Enhanced
Memory Specification). That, plus having on
board expandable memory of 2Mb (DART)
and 3Mb (DART 012) means that you can
break the 640K barrier without the added
expense of a memory enhancement card.
Intelligence
Advanced Logic Research brings
together the best features offered by
anyone in the microcomputer industry. We
provide a complete solution to the PC
buyer’s needs.
Engineering Support
Dealer Support
t
1
EMS Support
J\ P -
□
□
S
□
Intelligent design, quality conscious
manufacturing and affordability along with
the added value of local dealer support and
guidance make the purchase of an ALR
PC the best possible choice. Before you
make a blind purchase from a mail-order
computer warehouse see your local ALR
dealer and take a long look at value.
Performance
DART $2295.00
Phoenix BIOS
1.2Mb Floppy Drive
1Mb RAM Expandable to 2Mb
EMS Software
Hard/Floppy Disk Controller
2 Serial Ports/Parallel Port
Large RT Style Keyboard
Battery Backup Clock Calendar
System Set-up Configuration
DART 012 $2695.00
Modular Bus Design
Phoenix Bios
80286-12 Microprocessor
80287 Socket on CPU Card
1.5Mb RAM Expandable to 3Mb
EMS Software
High Speed SONs 256K DRAM
1.2Mb Floppy Disk Drive
Combination Hard Disk/Floppy Controller
2 Serial Ports, 1 Parallel Port
Large RT Style Keyboard
Battery Backup Clock Calendar
Mail Order
$2295
ALR
$2295
| Available
I only
I through
I Qualified
ALR Dealers.
Advanced Logic Research, Inc.
10 Chryslei; Irvine, California 92718 - (714) 581-6770
FAX: (714) 581-9240 -TELEX: 5106014525, Answer back Advanced Logit-
Ask for ext. 12
CIRCLE NO. 116 ON READER SERVICE CARD
Lotus is a registered trademark of Lotus Development Corp.. Intel is a registered trademark of Intel Corp.. Microsoft is a registered trademark of Microsoft Corp.
‘ \5««v
^nnfc
No matter where you take
CROSSTALK* Mk.4...
You won’t encounter a PC communications program with as much versatility as
CROSSTALK®Mk. 4. It has everything we could imagine you needing today. More
protocols — X.PC, Xmodem, Kermit, and our own CROSSTALK. More terminal
emulations, including complete IBM 3IOI, DEC VT-100, and TeleVideo 900
series Concurrent communications capability — up to 15 sessions, each
displayed in its own expandable window, or on separate ' 'pages. ’ ’ Error
checking at high speeds. Prepared script files to extract information from
most popular information utilities. A powerful programming language
to create customized scripts. Finally, we’ve built-in a bit of tomorrow.
CROSSTALK Mk. 4 is based on a modular architecture that means we
can add new capabilities by phone, as they come along. So you’re
^ getting more than today’s standard in communications software.
\ % You’re getting tomorrow’s as well.
\ TA I I/® Digital Communications Associates, Inc.
V ; 1 \-^1\ L/\\ I ALlX 1 000 Holcomb Woods Parkway
com MU N ICATION s Roswell. Georgia 30076